正则表达式 Posted on 2017-12-29 正则表达式(Regular Expression):字符串匹配的模式(pattern),可以用来检查一个字符串是否含有某种子串。简单说就是一种规则。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869\:将一个字符标记为特殊字符。例:‘\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 匹配版权符号 (?)。