正则表达式
时间:2010-09-15 来源:游走灬小耗子
元字符 | 说明 |
---|---|
^ | 匹配字符串的开始位置 |
$ | 匹配字符串的结束位置 |
. | 匹配任意单个字符(换行符 \n 除外) |
| | 交替 |
{…} | 指定要限定的数量 |
[...] | 指定要匹配的字符集 |
(…) | 对表达式进行逻辑分组 |
* | 匹配零或多个前面的表达式 |
+ | 匹配一或多个前面的表达式 |
? | 匹配零或一个前面的表达式 |
\ | 放在上面任何一个字符之前,表示匹配该字符本身。放在其他特殊字符后面,表示字符转义(见下面) |
字符转义 | 说明 |
原始字符 | 除 . $ ^ { [ ( | ) ] } * + ? \ 之外的字符均匹配自身 |
\a | 匹配铃声(闹铃)\u0007 |
\b | 在[]中匹配一个空格 \u0008,在其他情况下匹配字边界(位于 \w 和 \W 字符之间) |
\t | 匹配制表符 \u0009 |
\r | 匹制回车符 \u000D |
\v | 匹配垂直制表符 \u000B |
\f | 匹配换页符 \u000C |
\n | 匹配换行符 \u000A |
\e | 匹配退出键(符) \u001B |
\040 | 匹配以八进制表示的 ASCII 字符(最多三位数);在没有前导零的情况下,如果只有一位数字或者相应数字与某个捕获组的编号对应,那就是反向引用(backreference)。字符 \040 表示一个空格。 |
\x20 | 匹配以十六进制表示的 ASCII 字符(两位数) |
\cC | 匹配 ASCII 控制符,例如 \cC 匹配 Ctrl+C |
\u0020 | 匹配以十六进制表示的 Unicode 字符 |
\* | 反斜杠后面如果不是一个可转义的字符,则匹配该字符本身。例如,\* 就相当于\x2A |
字符类 | 说明 |
. | 匹配除 \n 之外的任意字符。 |
[aeiou] | 匹配特定字符集中包含的任意一个字符 |
[^aeiou] | 匹配特定字符集中不包含的任意一个字符 |
[0-9a-fA-F] | 连字符(-)用来指定连续的字符范围 |
\p{name} | 匹配由{name}指定的命名字符类中的任意字符 |
\P{name} | 匹配不包含在{name}指定的组或块范围中的文本 |
\w | 匹配英文数字字母字符,在指定兼容ECMAScript的情况下,等价于[a-zA-Z0-9] |
\W | 匹配非英文数字字母字符,在指定兼容ECMAScript的情况下,等价于[^a-zA-Z0-9] |
\s | 匹配任意空白字符,在指定兼容ECMAScript的情况下,等价于[\f\n\r\t\v] |
\S | 匹配任意非空白字符,在指定兼容ECMAScript的情况下,等价于[^\f\n\r\t\v] |
\d | 匹配数字字符,在指定兼容ECMAScript的情况下,等价于[0-9] |
\D | 匹配非数字字符,在指定兼容ECMAScript的情况下,等价于[^0-9] |
今天修改了几个正则表达式,其中一个客户想在输入手机号码、家庭号码的时候,希望能有备注,例如“150xxxx0650(女友)”,所以就在之前的正则表达式的基础上做了修改,“^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$”这是家庭电话的,刚开始没考虑周全,就在后面加了“.*”就行了,结果用RegexTester测试发现数字没有限制了,所以在网上找了正则表达式资料烟酒了一番,其实很简单,只需要在后面加上“[^\d]*”,唉,万恶的正则表达式。
相关阅读 更多 +