什么是正则表达式
正则表达式又称规则表达式。(在代码中常简写为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/
- 百度关键字 正则表达式测试
- 使用各类编程语言、脚本等测试
常见场景
收集手机号码段
编写程序匹配是否为手机号
编写程序区分手机号运营商