下面是一个更复杂的表达式:(?0d{2}[) -]?d{8}。
这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字({2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(d{8})。不幸的是,它也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题,请在本教程的下面查找答案。
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:
| 代码/语法 | 说明 |
|---|---|
| W | 匹配任意不是字母,数字,下划线,汉字的字符 |
| S | 匹配任意不是空白符的字符 |
| D | 匹配任意非数字的字符 |
| B | 匹配不是单词开头或结束的位置 |
| [^x] | 匹配除了x以外的任意字符 |
| [^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
例子:S 匹配不包含空白符的字符串。
<a[^>] >匹配用尖括号括起来的以a开头的字符串。
好了,现在终于到了解决3位或4位区号问题的时间了。正则表达式里的
评论加载中…
![]() |