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



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

  1. 电话号码不应该包含字母(尽管提起来很傻;)
  2. 电话号码应至少包含10个字符,最多包含17个字符
  3. 电话号码应接受"-"、"."、"+"。(非强制性)
  4. "-"或"."如果存在,则不应出现在数字的开头或结尾
  5. 只允许有一个"+",数字的开头也允许有这个"+"
  6. 如果输入的所有字符都是"-"或",则电话号码应无效

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

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

尽管这并不能满足我的所有限制。请给我一个好的regular expression

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

^+?[0-9][0-9.-]{8,15}[0-9]$

演示

这满足了您所有的书面约束,如果存在,将+计算为一个字符:

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

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

最新更新