【问题标题】:Regex to validate all phone numbers正则表达式验证所有电话号码
【发布时间】:2016-11-04 07:01:18
【问题描述】:

我需要构建一个正则表达式来验证includes + ( ) . - 的所有类型的电话号码

感谢谷歌和堆栈溢出,我得到了一个正则表达式

/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g

验证所有电话号码。

但在验证+(123 456-7890 时,上述正则表达式无法按预期工作。 所以我将上面的正则表达式修改为

/^\+?([(]{1}[0-9]{1,3}[)]{1}|[0-9]{1,3})([-\s0-9]*|[.\s0-9]*)\d+$/

而且效果很好。

现在我需要限制用户输入连续的-和dots(.)

所以我手动验证了

if(HomePhone.indexOf("..") > -1 && HomePhone.indexOf("--") > -1) 
return false;

谁能帮助我通过改进它使用单个正则表达式解决上述问题..?

提前致谢

【问题讨论】:

  • 您限制用户不提供超过 3 个连续数字的方式,您可以对连字符和点执行此操作,对吗?想想吧。
  • 我没有给你投反对票。试试这个链接stackoverflow.com/questions/22378736/…
  • @WasiAhmad 用户可以有空格、句号和连字符,但不能连续。他可以输入连续的数字
  • @NitinKumar 感谢您的链接。让我看看并尝试一下
  • @ManikandanSekar 我可以理解,空格、句号和连字符的位置也是固定的。您只需要确保用户被限制连续放置多个连字符或点,这与您对数字所做的相同。

标签: javascript


【解决方案1】:

我相信下面的正则表达式会满足你的所有要求。

正则表达式:^\+?(\([0-9]{3}\)|[0-9]{3})(-. )?[0-9]{3}(-. )?[0-9]{4}$

此正则表达式应接受以下内容:

(123) 456-7890 
+(123) 456-7890 
+(123)-456-7890 
123-456-7890 
123.456.7890 
1234567890 
+3163636363 
075-6354672

如果需要,您可以修改此表达式以适应您的要求。

【讨论】:

    【解决方案2】:

    用于匹配..-- 使用正则表达式/(\.\.+|\--+)/g

    Demo Here

    【讨论】:

    • 感谢您的快速回复。正如我在帖子中提到的,我需要使用相同的正则表达式验证多个字段,所以我删除了 g 标志。我会试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2014-06-25
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多