要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办?
很简单,你只需要在方括号里列出它们就行了,像\[aeiou\]就匹配任何一个英文元音字母,\[.?!\]匹配标点符号(.或?或!)。
我们也可以轻松地指定一个字符**范围**,像\[0-9\]代表的含意与\\d就是完全一致的:一位数字;同理\[a-z0-9A-Z\_\]也完全等同于\\w(如果只考虑英文的话)。
`下面是一个更复杂的表达式:\\(?0\\d{2}\[) -\]?\\d{8}。`
`“(”和“)”也是元字符`,后面的[分组节](https://www.jb51.net/tools/zhengze.html)里会提到,所以在这里需要使用[转义](https://www.jb51.net/tools/zhengze.html)。
这个表达式可以匹配几种格式的电话号码,像*(010)88886666*,或*022-22334455*,或*02912345678*等。
我们对它进行一些分析吧:首先是一个转义字符\\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\\d{8})。