【问题标题】:Phone number validation REGEX电话号码验证正则表达式
【发布时间】:2013-01-25 17:04:33
【问题描述】:

我正在使用以下正则表达式来验证电话号码

/^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$/gi

如果输入是假设 +51 (0) 989009890 是有效的。但是当输入是0051 (0) 989009890。我是 REGEX 的新手,所以找不到可能的解决方案。

以下格式的电话号码有效。

  1. 0xxxxxxxxxxx
  2. +xx xxxxxxxxxxx
  3. +xxxxxxxxxxxxxxx
  4. +xx (x) xxxxxxxxxx
  5. 00xxxxxxxxxx
  6. 00xx (x) xxxxxxxxx

这里的 x 表示数字 0-9。 () 中的数字限制为 3。

【问题讨论】:

  • 但是当输入0051*****时???
  • 实际上我的意思是电话号码可以以 00xxxx 开头,但在这种情况下,如果 (xxx) 存在,那么将 00xxx 放在前面会使给定的正则表达式无效
  • 为什么(?!([^-]*-){5})..你想在这里实现什么..我的意思是这也可以匹配------甚至空格

标签: regex jquery-validation-engine


【解决方案1】:

如果你也想接受0051 (0) 989009890,问题是(+\d+)?旨在处理输入中括号之前的位,但它需要存在“+”。您可以通过使用“?”将其设为可选来更改它,例如:

/^(?!([^-]*-){5})(\+?\d+)?\s*(\(\d+\))?[- \d]+$/gi

或者,如果 '00xxx' 应该是 '+xxx' 的替代品(即,必须存在 '+' 或 '00'),那么您可以使用:

/^(?!([^-]*-){5})(\+\d+|00\d+)?\s*(\(\d+\))?[- \d]+$/gi

【讨论】:

  • 为什么/i考虑一个数字不关心大小写?
  • @h2ooooooo 不要忘记大写空格 :)
  • @Developer 你为什么要使用(?!([^-]*-){5,}).. 而且正则表达式也会匹配---- 或空格
【解决方案2】:

我猜这就是你要找的东西

^(?!([^-]*-){5,})(\+?\d+)?\s*(\(\d{1,3}\))?\s*[- \d]+$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2014-06-25
    • 2012-02-13
    • 1970-01-01
    • 2016-12-23
    • 2016-12-09
    相关资源
    最近更新 更多