我正在尝试使用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
谢谢!
答案 0 :(得分:3)
您应该在“正确的”位置放置单词边界。它们必须放在第一个必填词char匹配模式和最后一个必填词char之后。
\(?\b([0-9]{2,3}|0((x|[0-9]){2,3}[0-9]{2}))\)?\s*[0-9]{4,5}[- ]*[0-9]{4}\b
^^ ^^
请参见regex demo
如果将\b
放在\(?
之前,则当数字前有(
时,如果{{1 }}。