-1
Pattern pattern = Pattern.compile("\\d{2,2}9?\\d{4,4}\\d{4,4}");

我使用上面的模式来匹配电话号码,但是像“110123456789”这样的数字与模式匹配。但是,第三个数字应该是 0 和 9。模式有什么问题?

电话号码可以有 10 位或 11 位数字。如果数字有 11 位,则第三位必须是“9”。一个例子:

11 1234 5678

48 91234 5678

4

3 回答 3

3

两件事情:

  1. 问号表示 9 是可选的,因此如果9需要,请将其删除
  2. 正则表达式可以匹配字符串的一部分。^在正则表达式的开头和结尾使用$,仅匹配整个字符串。看到这个页面
于 2013-10-15T11:11:32.110 回答
1

只需使用单词边界\b

Pattern pattern = Pattern.compile("\\b\\d{2}9?\\d{4}\\d{4}\\b");
于 2013-10-15T11:12:21.847 回答
0

利用

^(\d{2})\s?(9?\d{4})\s?(\d{4})$

这将捕获您的示例并将数字分组,例如

AA (B)BBBB CCCC

于 2013-10-15T11:14:52.603 回答