具有自定义约束的电话号码验证正则表达式

时间:2014-09-10 13:42:14

标签: javascript regex

我应该验证一个电话号码。我的约束是这样的。

  1. 电话号码不应包含字母(愚蠢但要提及;))
  2. 电话号码最少10个字符,最多17个字符。
  3. 电话号码应接受“ - ”,“。”,“+”。(非强制性)
  4. “ -​​ ”或“。”如果存在,不应该是数字的开头或数字的结尾。
  5. 只允许一个“+”,并且在数字
  6. 的开头也是如此
  7. 如果输入的所有字符均为“ - ”或“。”
  8. ,则电话号码无效

    到目前为止,我使用以下表达式。

    var phoneExpression = /^(?=.*[0-9])([0-9\.\-\+\ \(\)\/]+)*$/;
    

    虽然这不符合我的所有限制。请给我一个好的regular expression

2 个答案:

答案 0 :(得分:2)

除了10个字符和最多17个字符之外,这个应该满足所有约束,因为如果存在,它将不计算+ sing。如果需要,您应该使用替换|

复制正则表达式
^\+?[0-9][0-9.-]{8,15}[0-9]$

DEMO

答案 1 :(得分:1)

这符合你所有的书面限制,如果存在,则将+计为字符:

(?=^.{10,17}$)\+?\d[\d.-]+\d$

如果要添加括号和/或空格,只需将它们放在字符类中即可。 我怀疑这是不够的,因为你的描述会接受明显不是电话号码的结构。