正则表达式(Regular Expression):字符串匹配的模式(pattern),可以用来检查一个字符串是否含有某种子串。简单说就是一种规则。
\:将一个字符标记为特殊字符。例:‘\n’匹配一个换行符
^:字符串的开始位置。例:/^a/ 匹配a字符开始的字符串
$:字符串的结束位置。例:/^ab$/ 匹配只包含"ab"的字符串。
*:匹配前面的子表达式0/n次。等价于{0, }(可有可无)
+:匹配前面的子表达式1/n次。等价于{1, }(至少一次)
?:匹配前面的子表达式0/1次。等价于{0,1}(可有可无)
当跟在其他限制符后面时,匹配模式是非贪婪模式。例:对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
{n}:匹配n次,n是非负整数。例:/o{2}/ 匹配连续o两次 food-true fold-false
{n,}:匹配最少n次,n是非负整数。
{n,m}:匹配n<次数<m,n是非负整数。
. :匹配除'\n'以外的所有字符。
x|y:匹配x或y。
[xyz]:字符集合,匹配所包含的任意一个字符。
[^xyz]:负值字符集合,匹配不包含的任意一个字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'
[a-z]:字符范围。匹配指定范围内的任意一个字符。
[^a-z]:负值字符范围。匹配非指定范围内的任意一个字符。
\b:匹配一个单词边界(单词和空格间的位置)。例:‘er\b’可以匹配“never”中的”er“不能匹配”verb“中的“er”。
\B:匹配一个非单词边界(非单词和空格间的位置)。
\d:匹配一个数字字符。等价于[0-9]。
\D:匹配一个非数字字符。等价于[^0-9]。
\f:匹配一个换页符。等价于\x0c和\cL。
\n:匹配一个换行符。等价于 \x0a 和 \cJ。
\r:匹配一个回车符。等价于\x0d和\cM。
\s:匹配任何空白字符(空格、制表符、换页符...)。等价于[\f\n\r\t\v]。
\S:匹配任何非空白字符。等价于[^\f\n\r\t\v]。
\t:匹配一个制表符。
\v:匹配一个垂直制表符。
\w:匹配包含下划线的任何单词字符。等价于[a-z0-9_]
\W:匹配非单词字符。等价于[^a-z0-9_]
\xn:匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num:匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\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 字符。例如, \u00A9 匹配版权符号 (?)。