阿根廷的电话正则表达式验证

Pab*_*rns 5 regex phone-number

我为我的国家的电话找到了一个正则表达式,但我缺少一些东西。

这里的规则是: (Area Code) Prefix - Sufix

  • 区号可以是 3 到 5 位数字
  • 前缀可以是 2 到 4 位数字。
  • 区号 + 前缀为 7 位数字。
  • 后缀始终为 4 位数字
  • 总位数为 11。

我想我可以用 OR “|” 链接 3 个简单的正则表达式 像这样:

/(\(?\d{3}\)?[- .]?\d{4}[- .]?\d\d\d\d)|(\(?\d{4}\)?[- .]?\d{3}[- .]?\d\d\d\d)|(\(?\d{5}\)?[- .]?\d{2}[- .]?\d\d\d\d)/
Run Code Online (Sandbox Code Playgroud)

我做错的事情是\d\d\d\d后缀不只匹配 4 位数字,例如:(011) 4740-5000 这是一个有效的电话号码,工作正常,但如果输入额外的数字,它也会作为有效的数字返回电话号码,即:(011) 4740-5000000000

Bra*_*raj 3

您应该使用^and$来匹配整个字符串

例如,^\d{4}$将精确匹配 4 位数字,不多不少。

这是完整的正则表达式模式

^((\(?\d{3}\)? \d{4})|(\(?\d{4}\)? \d{3})|(\(?\d{5}\)? \d{2}))-\d{4}$
Run Code Online (Sandbox Code Playgroud)

在线演示


根据您的正则表达式模式分隔符可以是-.或单个空格,然后尝试

^((\(?\d{3}\)?[-. ]?\d{4})|(\(?\d{4}\)?[-. ]?\d{3})|(\(?\d{5}\)?[-. ]?\d{2}))[-. ]?\d{4}$
Run Code Online (Sandbox Code Playgroud)