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
两件事情:
9
需要,请将其删除^
在正则表达式的开头和结尾使用$
,仅匹配整个字符串。看到这个页面只需使用单词边界\b
:
Pattern pattern = Pattern.compile("\\b\\d{2}9?\\d{4}\\d{4}\\b");
利用
^(\d{2})\s?(9?\d{4})\s?(\d{4})$
这将捕获您的示例并将数字分组,例如
AA (B)BBBB CCCC