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

时间:2014-08-20 12:19:20

标签: regex phone-number

我想出了我国家电话的正常表达,但我发现了一些事情。

此处的规则是:(Area Code) Prefix - Sufix

  • 区号可以是3到5位
  • 前缀可以是2到4位数。
  • 区号+前缀长7位。
  • Sufix总是4位数
  • 总数是11.

我想我可以将3个简单的正则表达式与OR" |"像这样:

/(\(?\d{3}\)?[- .]?\d{4}[- .]?\d\d\d\d)|(\(?\d{4}\)?[- .]?\d{3}[- .]?\d\d\d\d)|(\(?\d{5}\)?[- .]?\d{2}[- .]?\d\d\d\d)/

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

5 个答案:

答案 0 :(得分:1)

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

例如^\d{4}$将恰好匹配4位数而不是更少。

这是完整的正则表达式

^((\(?\d{3}\)? \d{4})|(\(?\d{4}\)? \d{3})|(\(?\d{5}\)? \d{2}))-\d{4}$

Online demo


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

^((\(?\d{3}\)?[-. ]?\d{4})|(\(?\d{4}\)?[-. ]?\d{3})|(\(?\d{5}\)?[-. ]?\d{2}))[-. ]?\d{4}$

答案 1 :(得分:1)

这种模式适用于我:

/^\\(?(\d{3,5})?\\)?\s?(15)?[\s|-]?(4)\d{2,3}[\s|-]?\d{4}$/

答案 2 :(得分:0)

您需要通过指示锚点的开头和结尾来匹配完整表达式。你也不需要不同长度的轮换。

/^(?=(\D*\d){11}$)\(?\d{3,5}\)?[- .]?\d{2,4}[- .]?\d{4}$/

以下是细分:

(?=(\D*\d){11}$)    is a non-capturing group ensuring that there are 11 digits total,
                     with any number of non-digits amongst them
\(?\d{3,5}\)?[- .]? matches 3-5 digits in parens (area code), followed by a separator
\d{2,4}[- .]?       matches 2-4 digits (prefix), followed by a separator
\d{4}               matches the suffix

答案 3 :(得分:0)

我在regex101中对此进行了测试:

/^((?:\(?\d{3}\)?[- .]?\d{4}|\(?\d{4}\)?[- .]?\d{3}|\(?\d{5}\)?[- .]?\d{2})[- .]?\d{4})$/

RegEx Demo

  • ^匹配字符串的开头
    • (捕获组的开始
      • (?:非捕获组的开始
        • 区域代码的不同选项&前缀
      • )结束非捕获组
      • [- .]?\d{4}电话号码的最后四位数字
    • )结束捕获组
  • $匹配字符串的结尾

答案 4 :(得分:0)

如果您正在尝试验证此类电话号码,则以下内容应符合您的需求:

^(?=.{15}$)[(]\d{3,5}[)] \d{2,4}-\d{4}$

Regular expression visualization

Debuggex Demo