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 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php调用google接口生成二维码示例
Apr 28 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
抛弃 PHP 代价太高
Apr 26 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
Python中对列表排序实例
2015/01/04 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
2020/08/05 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
预备党员党课思想汇报
2014/01/13 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2014年库房工作总结
2014/11/26 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
停电放假通知
2015/04/14 职场文书