【问题标题】:Javascript RegEx for Global phone numbers全球电话号码的 Javascript RegEx
【发布时间】:2013-02-14 17:15:34
【问题描述】:

我正在浏览互联网以查找电话号码的正确 javascript 正则表达式,但我找到的不是我需要的。

我的案例可接受的电话号码类型必须符合以下规则:

  • 可以以+0-9 开头
  • 所有剩余字符串只允许有0-9-和空格(最好在数字之间只有1个空格)

到目前为止,我试过这个:/^\+[\-\d\s]/,但我没有得到正确的结果。我试图阅读一些教程,但我对此很陌生,似乎我遗漏了一些东西。

例如,可接受的电话号码是:+30 6995 4488551(允许空格)或 0030 6995 4488551 等。

任何帮助将不胜感激! :)

【问题讨论】:

  • 破折号、空格、连字符等正在格式化。不允许或拒绝它们 - 测试时忽略它们。
  • 也许这就是您要找的东西? [链接]stackoverflow.com/questions/4147614/…
  • 感谢您的回复,但该主题的那些答案不是我需要的,因为在答案中他们只是删除了他们不想要的字符并验证其余部分。我不认为这是处理它的好方法。我希望用户输入正确的字符串。例如,用户不能在任意位置输入+,只能在开头输入。

标签: javascript regex


【解决方案1】:

您的正则表达式匹配以+ 开头的任何内容,后跟单个-、数字或空格字符。所以你会匹配例如:

  • +4qwertzuiopasdfghjkl
  • +-asdfasdfasdfasdf

我建议您查看http://www.regular-expressions.info/ 上的示例和教程。至于您的电话号码,更好的正则表达式是:

/^\+?[\d -]+$/

这将匹配所有有效数字,但也匹配无效的结构,如 +--------- 或只是 + 与尾随空格。如果您想真正接近于拒绝许多无效组合,我建议您阅读this,但您可以看到正则表达式变得混乱。

【讨论】:

    【解决方案2】:

    添加到 migg 的答案 - 您可以在正则表达式测试之后添加更多过滤器,例如,可以确保表达式中至少有最少数量的数字,或者你有什么。 例如,

     if !(phone_number.match(/\d/g).length == 9) inValidate()
    

    【讨论】:

      猜你喜欢
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2011-08-07
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多