- 正则表达式-语法
字符 | 描述 | 举例 |
^ | ^号匹配字符串的开头(一行); 在[ ]中使用的时候,表示不接受该字符集合 | ^123:匹配以123开头的字符串 [^a-z]:匹配a-z以外的字符集 |
$ | $号匹配字符串的结尾(一行) | abc$:匹配以abc结尾的字符串 |
\A | 代表输入的开始位置(一段,不是一行) | |
\Z | 代表输入的结束位置(一段,不是一行) | |
+ | +号前面的字符必须至少出现1次或多次 | runoo+b:可匹配runoob/runooob/runooooooob |
* | *号前面的字符至少出现0次、1次或多次 | runoo*b:可匹配runob/runoob/runooooooob |
? | ?号前面的字符最多只能出现一次; 当该字符紧跟在其他限定符(*,+,?,{n},{n,m})后面时,匹配模式是非贪婪的,即尽可能少的匹配所搜索的字符串 | colou?r:可匹配color/colour o+?:匹配单个字符o,而o+才匹配多个o |
. | 匹配单个任意字符, 要匹配包括 '\n' 在内的任何字符,请使用像"(.|\n)"的模式。 | |
{n} | 匹配前一个字符n次 | o{2}:匹配"food"中的两个o |
{n, } | 匹配前一个字符至少n次 | |
{n,m} | 匹配前一个字符n到m次 | |
\d | 数字 | |
\D | 非数字 | |
\s | 空格 | |
\S | 非空格 | |
\w | 匹配字母、数字、下划线字符,等价于:[a-zA-Z0-9_] | |
\W | 匹配非字母、数字、下划线字符,等价于:[^a-zA-Z0-9_] | |
\b | 匹配字边界处的字符,即字与空格间的位置 | \bapt匹配aptitude中的apt |
\B | 非字边界匹配 | \Bapt匹配chapter中的apt |
\num | 后向引用,num是一个正整数,对所获取的匹配的引用 | <h([1-6])>.*?</h\1 >:\1代表前面的子模式([1-6])的匹配结果 |
x|y | 匹配x或y | |
[a-z] | 匹配字符范围,如:字母a-z | |
(pattern) | 圆括号,匹配pattern子模式,并获取这一匹配结果,可用于后向引用 | |
(?:pattern) | 匹配pattern但不获取这一结果,不能用于后向引用 | |
(?=pattern) | 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串(非获取匹配,仅作为条件限制) | Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows |
(?!pattern) | 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串(非获取匹配,仅作为条件限制) | 'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows" |
\f | 匹配一个换页符 | |
\n | 匹配一个换行符 | |
\r | 匹配一个回车符 | |
\t | 匹配一个制表符 | |
\v | 匹配一个垂直制表符 | |
\xn | 匹配 n,其中 n 为十六进制转义值,十六进制转义值必须为确定的两个数字长 | '\x41' 匹配 "A" |
\n | 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 | |
\nm | 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 | |
\nml | 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 | |
\un | 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。 | 汉字:^[\u4e00-\u9fa5]{0,}$ |
- 正则表达式-运算符优先级
优先级由高到低排序为:
运算符 | 描述 |
\ | 转义符 |
(),(?:),(?=),[] | 圆括号和方括号 |
*,+,?,{n},{n, },{n,m} | 限定符 |
^,$,\任何元字符、任何字符 | 定位点和序列(即:位置和顺序) |
| | 替换,"或"操作 字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。 |
- 常用的正则表达式
1、长度为8-10的用户密码(以字母开头、数字、下划线)
^[a-zA-Z]\w{7,9}$
2、验证输入只能是汉字 :
^[\u4e00-\u9fa5]{0,}$
3、电子邮箱验证:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
4、URL地址验证:
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
5、简单的身份证号验证:
\d{15}|\d{18}$