赞
踩
元字符:
^:表示匹配字符串的开始。
“^A”:匹配以大写字母 ‘A’ 开始的字符串。
例如:A、ABC、A123等。
$:表示匹配字符串的结束。
“A$”:匹配以大写字母 ‘A’ 为结尾的字符串。
例如:A、CBA、123A等。
^ 与 $ 结合起来使用,用于控制匹配的开始直到结束的匹配规则。
“^A123$”:匹配从开始到结尾为 ‘A123’ 的字符串。
例如:A123
*:表示匹配上一个字符零次或多次。
“^ab*$”:匹配的字符串以字符 ‘a’ 开始,可以没有字符 ‘b’,也可以有多个。
例如:a、ab、abbb等。
+:表示匹配上一个字符一次或多次。
“^ab+$”:匹配的字符串以字符 ‘a’ 开始,接着要有一个或多个字符 ‘b’。
例如:ab、abbb等。
?:表示匹配上一个字符零次或一次。
“^ab?$”:匹配的字符串以字符 ‘a’ 开始,可以没有字符 ‘b’,也可以有一个。
例如:a、ab等。
{n}:匹配上一个字符恰好n次。
“^\d{1,}\.\d{3}$”:匹配的数字字符串至少有1位整数位,且必须保留3位小数位。
例如:1.101、100.000等。
{n,}:匹配上一个字符至少n次及以上。
“^\d{1,}\.\d{2,}$”:匹配的数字字符串至少有1位整数位,且至少保留2位小数位。
例如:10.10、100.10101等。
{n,m}:匹配上一个字符至少n次,但不超过m次。
“^\d{1,}\.\d{2,3}$”:匹配的数字字符串至少有1位整数位,且至少保留2位小数位,至多保留3位小数位。
例如:10.10、100.101等。
*:等价于 “{0,}”
+:等价于 “{1,}”
?:等价于 “{0,1}”
?:当字符 ‘?’ 紧跟在其他限定符(*,+,?,{n},{n,},{n,m})后面时,匹配模式尽可能少的匹配所搜索的字符串。
例如:对于字符串 “food”,’^o+?$’ 将匹配单个 ‘o’,而 ‘^o+$’ 将匹配所有的 ‘o’。
|:表示“或”操作。
“^th(e|is|at)$”:匹配的字符串以 ‘th’ 开始,以 ‘e’ 或 ‘is’ 或 ‘at’ 结束。
例如:the、this、that等。
.:匹配除 “\n” 之外的任意单个字符。
“^.ear$”:匹配的字符串以除 ‘\n’ 之外的任意单个字符开始,以 ‘ear’ 结束。
例如:hear、bear、‘ ear’(注:有一个空格)等。
[xyz]:字符集合。匹配中括号中所包含的任意一个字符,相当于 “x|y|z”。
例如:”[abc]”,可以匹配 “plain” 中的 “a”。
[^xyz]:负值字符集合。匹配中括号中未包含的任意一个字符。
例如:”[abc] ”,可以匹配 “plain” 中的 ”p”、”l”、”i”、”n”。
[a-z]:字符范围。匹配指定范围内的任意字符。
例如:”[a-z]”,可以匹配 “a” 到 “z” 范围内的任意小写字母。
[^a-z]:负值字符范围。匹配任何不在指定范围内的字符。
例如:”[^a-z]”,可以匹配任何不在 “a” 到 “z” 范围内的的任意字符。
[a-zA-Z]:字符范围。匹配指定范围内的任意字符。
例如:”[a-zA-Z]”, 可以匹配 “a” 到 “z” 范围内的任意小写字母,以及 “A” 到 “Z” 范围内的任意大写字母。
[0-9]:字符范围。匹配指定范围内的任意数字字符。
例如:”[0-9]”,可以匹配 “0” 到 “9” 范围内的任意一个数字。
([a-z]):匹配 "[a-z]" 并捕获这一匹配,进行存储供以后使用。要匹配圆括号字符,请使用 “
例如:^([a-z])\\1$,可以匹配 "aa"、"bb" 等。
(?:[a-z]):匹配 "[a-z]" 但不捕获这一匹配,不进行存储供以后使用。
例如:^b(?:ored|read|road)$,可以匹配 "bored"、"bread"、"broad",比起 “^bored|bread|broad$” 更简略一些。
(?=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"。
预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
PS:在方括号里使用字符 “^”,它就相当于逻辑非。
转义字符:
正则表达式中的反斜杠字符 “\” 指示其后跟的字符是特殊字符,或应按原义解释该字符。
例如:”n“ 匹配字符 "n"。”\n“ 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
\b:匹配一个单词边界,也就是指单词和空格间的位置。
例如: “er\b”,可以匹配 "never" 中的 “er”,但不能匹配 "verb" 中的 “er”。
\B:匹配非单词边界。
例如:“er\B”,可以匹配 "verb" 中的 “er”,但不能匹配 "never" 中的 “er”。
\d:匹配一个数字字符。它等价于 “[0-9]”。
\D:匹配一个非数字字符。它等价于 “[^0-9]”。
\s:匹配任何空白字符,包括空格、制表符、换页符等。它等价于 “[ \f\n\r\t\v]”。
\S:匹配任何非空白字符。它等价于 “[^ \f\n\r\t\v]”。
\w:匹配包括下划线的任何单词字符,以及数字字符。等价于 “[a-zA-Z0-9_]”。
\W:匹配任何非单词字符。它等价于 “[^A-Za-z0-9_]”。
\f:匹配一个换页符。
\n:匹配一个换行符。换行就是转到下一行输出。
\r:匹配一个回车符。回车和换行不同,回车效果是输出回到本行行首。
\t:匹配一个水平制表符。一般来说,就相当于按下键盘的TAB键。
\v:匹配一个垂直制表符。它的作用是让 ‘\v’ 后面的字符从下一行开始输出,且开始的列数为 ‘\v’ 前一个字符所在列的后面一列。
偶尔有看到正则里面有 “\1\2”,这种的表示方法。
"\1":表示重复正则第一个圆括号内匹配到的内容。
“\2”:表示重复正则第二个圆括号内匹配到的内容。
例如有以下正则表达式 :
“^([0-9])([a-z])\\1\\2$”
那么它能匹配的字符串为:
"1a1a"、”1b1b“、"2c2c" 等。
意思就是括号里面的正则表达式会被捕获,可以理解为拷贝(Ctrl+C),而 "\1" 就表示粘贴第一个捕获的正则表达式(Ctrl+V),"\2" 就是粘贴第二个被捕获的正则表达式,以此类推。还有一个 "\0",表示所有捕获的正则表达式。
需要注意的是,这里为什么不会匹配 "1a2b" 这类的字符串,因为前面说到是类似于复制粘贴捕获的正则表达式,所以它匹配的字符串也要与捕获的正则表达式的匹配项相同。
下面列出一些可以直接拿来用的正则表达式,以后也会继续补充:
不限长度纯数字字符串:
^[0-9]*$ 或者 ^\\d*$ (注:这里的第一个反斜杠 "\" 是为了转义,后面就不在提了)
密码(以字母开头,长度在6~16之间,只能包含字母、数字和下划线):
^[a-zA-Z]\\w{5,16}$
日期格式:
^\d{4}-\d{1,2}-\d{1,2}$
汉字:
^[\u4e00-\u9fa5]{0,}$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。