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 IE中下载附件问题解决方法
Jan 07 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
浅析PHP7 的垃圾回收机制
Sep 06 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
javascript 数组的方法集合
2008/06/05 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
javascript表单验证大全
2015/08/12 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
python中MethodType方法介绍与使用示例
2017/08/03 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
python爬虫请求头的使用
2020/12/01 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
英国综合网上购物商城:The Hut
2018/07/03 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
医院实习介绍信
2014/01/12 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
停水通知
2015/04/16 职场文书
红色经典电影观后感
2015/06/18 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang