在程序设计中,正则表达式是再常见不过的了,我们常常为一个正则表达式忙于search,拼装,不如通过这篇文章来快速了解一下,怎样快速使用正则表达式!
一、了解普通转义字符
原子 说明
---------------------------------------------------------------------------------
\d 匹配一个数字;等价于[0-9] //[]原子表
\D 匹配除数字以外任何一个字符;等价于[^0-9]//^取反
\w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
\W 匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_](标点符号 空白符)
\s 匹配一个空白字符;等价于[\f\n\r\t\v]
\S 匹配除空白字符以外任何一个字符;等价于[^\f\n\r\t\v]/
\f 匹配一个换页符等价于 \x0c 或 \cL
\n 匹配一个换行符;等价于 \x0a 或 \cJ
\r 匹配一个回车符等价于\x0d 或 \cM
\t 匹配一个制表符;等价于 \x09\或\cl
\v 匹配一个垂直制表符;等价于\x0b或\ck
\oNN 匹配一个八进制数字
\xNN 匹配一个十六进制数字
\cC 匹配一个控制字符
二、特殊含义的字符--元字符,如果要在正则表达式中包含元字符本身,必须在其前加上”\”进行转义
元字符 说明
* 0次、1次或多次匹配其前的原子
+ 1次或多次匹配其前的原子
? 0次或1次匹配其前的原子
| 匹配两个或多个选择
^ 或 \A 匹配字符串串首的原子
$ 或 \Z 匹配字符串串尾的原子
\b 匹配单词的边界
\B 匹配除单词边界以外的部分
[] 匹配方括号中的任一原子
[^] 匹配除方括号中的原子外的任何字符
() 整体表示一个原子
. 匹配除换行之外的任何一个字符
三、边界限制
1.字符串边界限制,^表示开始,$表示结束,例如 /^Tom$/精确匹配 /Tom/模糊匹配
2.单词边界限制,元字符“\b”对单词的边界进行匹配, 元字符“\B”对除单词边界以外的部分进行匹配,如\bis\b匹配is不匹配this, \Bis\B匹配This中的is
四、匹配次数限制
“{m}”表示其前原子恰好出现m次;
“{m,n}”表示其前原子至少出现m次,至多出现n次;
“{m,}”表示其前原子出现不少于m次。
例如:
/zo{1,3}m/只能匹配字符串“zom”、“zoom”、或“zooom”。
/zo{3}m/只能匹配字符串“zooom”
/zo{3,}m/可以匹配以 “z” 开头,“m”结束,中间至少为3个“o”的字符串。
/bo{0,1}u/可以匹配字符串“bought a butter” 中的“bou”和“bu”,等价于bo?u。
五、原子表(方括号匹配)
原子表”[]”中存放一组原子,彼此地位平等,且仅匹配其中的一个原子。如果想匹配一个 ”a” 或 ”e” 使用 [ae]。
例如: Pr[ae]y 匹配 ”Pray” 或者 ”Prey ”。
原子表 ”[^]” 或者称为排除原子表,匹配除表内原子外的任意一个字符。
例如:/p[^u]/匹配“part”中的“pa”,但无法匹配“computer”中的“pu”因为“u”在匹配中被排除。
原子表“[-]”用于连接一组按ASCII码顺序排列的原子,简化书写。
例如:/x[0123456789]/可以写成x[0-9],用来匹配一个由 “x” 字母与一个数字组成的字符串。
例如:
/[a-zA-Z]/匹配所有大小写字母
/^[a-z][0-9]$/匹配比如“z2”、 “t6” 、“g7”//字符开头 数字 结束
/0[xX][0-9a-fA-F]/匹配一个简单的十六进制数字,如“0x9”。
/[^0-9a-zA-Z_]/匹配除英文字母、数字和下划线以外任何一个字符,其等价于\W。
/0?[ xX][0-9a-fA-F]+/匹配十六进制数字,可以匹配“0x9B3C”或者“X800”等。
/<[A-Za-z][A-Za-z0-9]*>/可以匹配“<P>”、“<hl>”或“<Body>”等HTML标签,并且不严格的控制大小写。