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 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
基于php iconv函数的使用详解
Jun 09 PHP
yii操作session实例简介
Jul 31 PHP
一段实用的php验证码函数
May 19 PHP
Zend Framework常用校验器详解
Dec 09 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 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 simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
python基于twisted框架编写简单聊天室
2018/01/02 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
python+os根据文件名自动生成文本
2019/03/21 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python实现QQ批量登录功能
2019/06/19 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
Python之变量类型和if判断方式
2020/05/05 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
旷课检讨书3000字
2014/02/04 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
法律进社区实施方案
2014/03/21 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
走群众路线学习笔记
2014/11/06 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
Spring中bean集合注入的方法详解
2022/07/07 Java/Android