我正在尝试使用Regex验证巴西电话号码。
由于某些原因,我不能用\b来表示比赛的开始和结束。在这种情况下,我的Regex会选择一些无效的电话号码作为有效号码。
RegEX:
(?([0-9]{2,3}|0{1}((x|[0-9]){2,3}[0-9]{2})))?s*[0-9]{4,5}[- ]*[0-9]{4}
有效号码:
(00)0000-0000; true
(00)000000000; true
(00) 00000 0000; true
00 00000 0000; true
(000)00000 0000; true
无效号码:
23232443243243423432; true
(0000)000000000; true
a00 00000-0000 ; true
谢谢!
您应该将单词边界放在"正确"的位置。它们必须放在第一个强制性单词的字符匹配模式和最后一个强制性单词字符之后。
(?b([0-9]{2,3}|0((x|[0-9]){2,3}[0-9]{2})))?s*[0-9]{4,5}[- ]*[0-9]{4}b
^^ ^^
查看regex演示
如果将b
放在(?
之前,当数字之前有(
时,如果(
之前没有单词字符,则单词边界将使匹配无效。