正则表达式-匹配巴西的电话号码

时间:2018-11-21 17:12:22

标签: javascript regex

我正在尝试使用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

谢谢!

1 个答案:

答案 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 }}。