PHP中的正规表达式(二)


Posted in PHP onOctober 09, 2006

确定重复出现

到现在为止,你已经知道如何去匹配一个字母或数字,但更多的情况下,可能要匹配一个单词或一组数字。一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。

字符簇 含义
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行
a{2,} 如:baad和aaa,但Nantucket不行
\t{2} 两个制表符
.{2} 所有的两个字符

这些例子描述了花括号的三种不同的用法。一个数字,{x}的意思是“前面的字符或字符簇只出现x次”;一个数字加逗号,{x,}的意思是“前面的内容出现x或更多的次数”;两个用逗号分隔的数字,{x,y}表示“前面的内容至少出现x次,但不超过y次”。我们可以把模式扩展到更多的单词或数字:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串
^[0-9]{1,}$ //所有的正数
^\-{0,1}[0-9]{1,}$ //所有的整数
^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数

最后一个例子不太好理解,是吗?这么看吧:与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可选的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,}),并且没有其他任何东西($)。下面你将知道能够使用的更为简单的方法。

特殊字符"?"与{0,1}是相等的,它们都代表着:“0个或1个前面的内容”或“前面的内容是可选的”。所以刚才的例子可以简化为:

^\-?[0-9]{0,}\.?[0-9]{0,}$

特殊字符"*"与{0,}是相等的,它们都代表着“0个或多个前面的内容”。最后,字符"+"与 {1,}是相等的,表示“1个或多个前面的内容”,所以上面的4个例子可以写成:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串
^[0-9]+$ //所有的正数
^\-?[0-9]+$ //所有的整数
^\-?[0-9]*\.?[0-9]*$ //所有的小数

当然这并不能从技术上降低正规表达式的复杂性,但可以使它们更容易阅读。

PHP 相关文章推荐
PHP中在数据库中保存Checkbox数据(2)
Oct 09 PHP
PHP文本操作类
Nov 25 PHP
php生成缩略图的类代码
Oct 02 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
一个非常实用的php文件上传类
Jul 04 PHP
php生成word并下载代码实例
Mar 15 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
tp5.1 框架join方法用法实例分析
May 26 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
smtp邮件发送一例
Oct 09 #PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 #PHP
PHP+javascript液晶时钟
Oct 09 #PHP
一个分页的论坛
Oct 09 #PHP
一个简易需要注册的留言版程序
Oct 09 #PHP
使用数据库保存session的方法
Oct 09 #PHP
COM in PHP (winows only)
Oct 09 #PHP
You might like
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
php链式操作的实现方式分析
2019/08/12 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
JS完成代码前最好对其做5件事
2013/04/07 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python进行特征提取的示例代码
2020/10/15 Python
利用python爬取有道词典的方法
2020/12/08 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
关于人生的感言
2014/01/17 职场文书
数学国培研修感言
2014/02/13 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
开学典礼致辞
2015/07/29 职场文书
话题作文之诚信
2019/11/28 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android