字符 | 用法 | 定义 |
\ | 依照下列规则匹配: 在非特殊字符之前的反斜杠表示下一个字符是特殊字符,不能按照字面理解。例如,前面没有 "\" 的 "b" 通常匹配小写字母 "b",即字符会被作为字面理解,无论它出现在哪里。但如果前面加了 "\",它将不再匹配任何字符,而是表示一个字符边界。 在特殊字符之前的反斜杠表示下一个字符不是特殊字符,应该按照字面理解。详情请参阅下文中的 "转义(Escaping)" 部分。 如果你想将字符串传递给 RegExp 构造函数,不要忘记在字符串字面量中反斜杠是转义字符。所以为了在模式中添加一个反斜杠,你需要在字符串字面量中转义它。 | |
^x | 匹配输入的开始。如果多行标志被设置为 true,那么也匹配换行符后紧跟的位置。 | 例如,/^A/ 并不会匹配 "an A" 中的 'A',但是会匹配 "An E" 中的 'A'。 |
x$ | 匹配输入的结束。如果多行标示被设置为 true,那么也匹配换行符前的位置。 | 例如,/t$/ 并不会匹配 "eater" 中的 't',但是会匹配 "eat" 中的 't'。 |
x* | 匹配前一个表达式 x0 次或多次。等价于 {0,} 。 | 例如,/bo*/ 会匹配 "A ghost boooooed" 中的 'booooo' 和 "A bird warbled" 中的 'b',但是在 "A goat grunted" 中不会匹配任何内容。 |
x+ | 匹配前面一个表达式 x1 次或者多次。等价于 {1,} 。 | 例如,/a+/ 会匹配 "candy" 中的 'a' 和 "caaaaaaandy" 中所有的 'a',但是在 "cndy" 中不会匹配任何内容。 |
x? | 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1} 。 | 例如, |
. | . (小数点)默认匹配除换行符之外的任何单个字符。 | 例如,/.n/ 将会匹配 "nay, an apple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。 |
(x) | 式 /(foo) (bar) \1 \2/ 中的 '(foo) ' 和 '(bar) ' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 \1 和 \2 表示第一个和第二个被捕获括号匹配的子字符串,即 foo 和 bar ,匹配了原字符串中的后两个单词。 | |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 | |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串 | |
x|y | 匹配‘x’或者‘y’。 | 例如,/green|red/匹配“green apple”中的‘green’和“red apple”中的‘red’ |
x{n} | n 是一个正整数,匹配了前面一个字符刚好出现了 n 次。 | 比如, /a{2}/ 不会匹配“candy”中的'a',但是会匹配“caandy”中所有的 a,以及“caaandy”中的前两个'a'。 |
x{n,} | n是一个正整数,匹配前一个字符至少出现了n次。 | 例如, /a{2,}/ 匹配 "aa", "aaaa" 和 "aaaaa" 但是不匹配 "a"。 |
x{n,m} | n 和 m 都是整数。匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 这个值被忽略。 | 例如,/a{1, 3}/ 并不匹配“cndy”中的任意字符,匹配“candy”中的a,匹配“caandy”中的前两个a,也匹配“caaaaaaandy”中的前三个a。注意,当匹配”caaaaaaandy“时,匹配的值是“aaa”,即使原始的字符串中有更多的a。 |
x[xyz] | 一个字符集合。匹配方括号中的任意字符,包括转义序列。你可以使用破折号(-)来指定一个字符范围。 | 例如,[abcd] 和[a-d]是一样的。他们都匹配"brisket"中的‘b’,也都匹配“city”中的‘c’。/[a-z.]+/ 和/[\w.]+/与字符串“test.i.ng”匹配。 |
[^xyz] | 一个反向字符集,可以使用破折号(-)来指定一个字符范围 | 例如,[^abc] 和 [^a-c] 是一样的。他们匹配"brisket"中的‘r’,也匹配“chop”中的‘h’。 |
[\b] | 匹配一个退格(U+0008)。(不要和\b混淆了。) | |
\b | 匹配一个词的边界。一个词的边界就是一个词不被另外一个“字”字符跟随的位置或者前面跟其他“字”字符的位置,例如在字母和空格之间 | /\bm/匹配“moon”中的‘m’; /oo\b/并不匹配"moon"中的'oo',因为'oo'被一个“字”字符'n'紧跟着。 /oon\b/匹配"moon"中的'oon',因为'oon'是这个字符串的结束部分。这样他没有被一个“字”字符紧跟着。 |
\B |
| 例如,/\B../匹配"noonday"中的'oo', 而/y\B../匹配"possibly yesterday"中的’yes‘ |
\cX | 当X是处于A到Z之间的字符的时候,匹配字符串中的一个控制符。 | 例如,/\cM/ 匹配字符串中的 control-M (U+000D)。 |
\d | 匹配一个数字。 等价于[0-9] 。 | 例如, /\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'。 |
\D | 匹配一个非数字字符。 等价于[^0-9] 。 | 例如, /\D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B' 。 |
\f | 匹配一个换页符 (U+000C)。 | |
\n | 匹配一个换行符 (U+000A)。 | |
\r | 匹配一个回车符 (U+000D)。 | |
\s | 匹配一个空白字符,包括空格、制表符、换页符和换行符。等价于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]。 | 例如, /\s\w*/ 匹配"foo bar."中的' bar'。 |
\S | 匹配一个非空白字符。等价于 [^ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] 。 | 例如,/\S\w*/ 匹配"foo bar."中的'foo'。 |
\t | 匹配一个水平制表符 (U+0009)。 | |
\v | 匹配一个垂直制表符 (U+000B)。 | |
\w | 匹配一个单字字符(字母、数字或者下划线)。等价于 [A-Za-z0-9_] 。 | 例如, /\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。 |
\W | 匹配一个非单字字符。等价于 [^A-Za-z0-9_] 。 | 例如, /\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。 |
\n | 正则表达式中,它返回最后的第n个子捕获匹配的子字符串(捕获的数目以左括号计数)。n是数字(1,2,3....) | 比如 /apple(,)\sorange\1/ 匹配"apple, orange, cherry, peach."中的'apple, orange,' |
\0 | 配 NULL(U+0000)字符, 不要在这后面跟其它小数,因为 \0<digits> 是一个八进制转义序列。 | |
\xhh | 与代码 hh 匹配字符(两个十六进制数字) | |
\uhhhh | 与代码 hhhh 匹配字符(四个十六进制数字)。 | |
\u{hhhh} | (仅当设置了u标志时)使用 Unicode 值 hhhh 匹配字符(十六进制数字)。 |
实用的正则表达式:
验证用户密码:"^[a-zA-Z]\w{5,17}$"
正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&'',;=?$\"等字符:"[^%&'',;=?$\x22]+"
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
验证Email地址:
1."^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
2. "/^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/";//可以为中文
3." /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/" //邮箱域名只能是163.com,qq.com或者42du.cn。
验证InternetURL:
"(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"
验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"
正确格式为:
"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
验证一年的12个月:"^(0?[1-9]|1[0-2])$"
正确格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"
正确格式为;"01"~"09"和"1"~"31"。
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
可输入形如2008、2008-9、2008-09、2008-9-9、2008-09-09. ^(\d{4}|(\d{4}-\d{1,2})|(\d{4}-\d{1,2}-\d{1,2}))$
验证 IP 地址:
public bool IPCheck(string IP) {
string num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
return Regex.IsMatch(IP,("^" + num + "\\." + num + "\\." + num + "\\." + num + "$"));
}
邮政编号:
public bool IsPostalcode(string str_postalcode) {
return System.Text.RegularExpressions.Regex.IsMatch(str_postalcode, @"^\d{6}$");
}
参考自JavaScript |MDN的正则表达式文章