什么是正则表达式
正则表达式又称规则表达式。(在代码中常简写为regex.regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索。替换那些符合某个规则的文本。
正则表达式的特点是:
灵活性、逻辑性和功能性非常强;可以迅速地用极简单的方式达到字符串的复制控制;对于刚接触的人来说,比较难懂
正则表达式的用途:
判断字符串是否合某一规则(判断是否合手机号、邮箱规则)从一个字符串中找出符合规则的所有子字符串(取HTML标签名)
正则表达式的语法
关键字:
$ () * + . [,] ^ {,} |
单个普通字符:
能使用键盘打出的全部字符(除关键字外)
A能匹配a $不能匹配$ \$能匹配$
特定的字符无法使用键盘输入比如:
字符ASSIC码转义字符空0x00\x00删除符0x08\b或\x08制表符0x08\t或0x09换行符0x0b\n或\x0b回车符0x0d\r或\x0d
使用\x00格式表示所有的ASSIC字符使用\u0000格式表示所有的Unicode字符(包括汉字)
常用转义字符:
值字符数字\d非数字\D空白字符(空格、制表符、换页符等)\s非空白字符\S制表符\t回车符\r换行符\n单词字符(26个英文字母+数字+下划线_)\w非单词字符\W
PHP中常见的正则表达式
自定义字符结合: 字符集合:[单个字符或字符区间],用于匹配集合内字符,如:
[a-z]表示这26个小写字母 [0-9a-z]表示0-9这10个数字和a-z这26个小写字母 [135a-h]表示包含数据1,3,5和字母a-h这8个字母 注意:两个不同字符段间请勿使用,隔开。 非集:[^单个字符或字符区间],用于匹配非集合内字符。如: [^0-9]表示匹配所有非数字字符。 [^a-zA-Z]表示匹配所有非字母字符。
多个正则表达式匹配:
限定符: 常用函数:
preg_match()
匹配第一个匹配正则的子子字符串,未找到返回0,找到返回1
ereg()和eregi()
判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false
preg_gerp()
-匹配第一个匹配的子字符串数组,包含匹配的字符串和匹配的单元
preg_match_all()
功能和perg_match()类似区别在于能匹配所有子串,返回子串数量
preg_replace()
将所有匹配正则的字符串进行替换
preg_split(),split和spliti()
使用正则表达式分割字符串
正则表达式测试方法:
打开 http://tool.oschina.net/regex/百度关键字 正则表达式测试使用各类编程语言、脚本等测试
常见场景
收集手机号码段 编写程序匹配是否为手机号 编写程序区分手机号运营商