【问题标题】:Regex Comma Separated Phone Number正则表达式逗号分隔的电话号码
【发布时间】:2015-12-21 22:56:17
【问题描述】:

我正在尝试生成一个匹配以下序列的正则表达式-

+91123456789,+41123456789,+21123456789....等,电话号码不限。

基本上这个用法是验证用户可以添加的电话号码,电话号码可以是多个并且需要用逗号分隔,我已经删除了用户可以添加的空格,所以不用担心。

我不擅长正则表达式并创建了以下正则表达式,但它与前面的电话号码不匹配,这意味着整个电话号码字符串不匹配-

^\+?\d{1,4}?[-.\s]?\(?\d{1,3}?\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9},\+?\d{1,4}?[-.\s]?\(?\d{1,3}?\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}$

我需要使用 javascript 或 jquery 验证用户输入。

有效的电话号码应该是国家代码,如 +91 或 +21 等国家代码可以是一位或两位数字,那么位数需要是 7 到 9。

任何人都可以提供帮助,这将是非常可观的,我花了很多时间在这个上。

【问题讨论】:

  • 我发现 www.regex101.com 是一个很好的资源。您没有在问题中指定您认为有效的电话号码是什么,什么是有效号码?
  • 为什么不直接\+\d{11}/g
  • @jack,你说得对,我一直在 regex101.com 上测试指定的正则表达式,我正在添加有问题的有效电话号码的格式。谢谢
  • 也许拆分, 并单独检查每个,这样您就可以轻松地告诉用户需要更正的具体问题。

标签: javascript jquery regex


【解决方案1】:

要验证整个字符串处理多个用逗号分隔的值,只需添加一个带有 * 乘数的组:

^\+\d{8,11}(,\+\d{8,11})*$

【讨论】:

  • 谢谢,您的解决方案运行良好,我也在您的回答中添加了正则表达式演示链接。
【解决方案2】:

如果我正确理解要求,以下正则表达式应该可以工作

\+\d{9,11}

但是,您可以将国家/地区代码分开,如果您需要允许(+44)xxxxxxxxx

\+\d{2}\d{7,9}

如果要求也允许使用 1 个国家/地区代码,请将正则表达式调整为以下

 \+\d{1,2}\d{7,10} //I think to 10, not sure on their numbers

您可以根据需要更新范围:)

演示:https://regex101.com/r/rJ4wM7/1

【讨论】:

  • 我相信你应该期望国家代码只有一位数字,美国是 +1,他还要求一种方法来添加多个电话并用逗号分隔它们
  • @Luizgrs,是的,我已经在我的问题中更新了一些国家/地区的国家代码,有些国家/地区有两位数,谢谢
  • @ManikArora 更新了我的答案
  • 我看不出\d{2}\d{7,9} 和简单的\d{9,11} 之间有什么区别?
  • @freefaller 没有,你完全正确,有助于更好地理解:) 允许在两者之间添加分隔符(即(+44)12123123123
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多