使用正则表达式验证电话号码,支持多个号码

时间:2012-11-21 13:34:07

标签: javascript regex validation

我对正则表达式不是很熟悉,我需要使用javascript验证电话号码。 我有一个文本框,需要允许接受多个电话号码,分隔符为';',且电话号码允许的字符为

  1. 数字
  2. '+'
  3. ' - '
  4. 有人可以帮助我如何使用javascript和正则表达式/正则表达式来实现这一目标吗?

    示例:

      

    + 91-9743574891; + 1-570-456-2233; + 66-12324576

    我尝试了以下内容:

    ^[0-9-+;]+$
    

    我不确定这是否正确。

4 个答案:

答案 0 :(得分:1)

您已将-放在错误的位置,因此regex无效。

试试这个(您的RegEx,但略有修改):

^[0-9+;-]+$

^[-0-9+;]+$

要在字符类中包含连字符,您必须执行以下操作之一:

  1. 转义连字符并使用\-
  2. 在字符类的开头或结尾处放置连字符。
  3. 由于连字符用于指定一系列字符。因此,正则表达式引擎理解[0-9-+;]+匹配099+之间的任何字符(所有字符都有十进制代码点{{1} } {char 57]到9 [char 43]并且它失败了)和+

答案 1 :(得分:0)

这个^([0-9\-\+]{5,15};?)+$

怎么样?

<强>解释

^          #Match the start of the line
[0-9\-\+]  #Allow any digit or a +/- (escaped)
{5,15}     #Length restriction of between 5 and 15 (change as needed)
;?         #An optional semicolon
+          #Pattern can be repeat once or more
$          #Until the end of the line

只有指定的限制可能更严格,请查看工作here

答案 2 :(得分:0)

为了更具限制性,您可以使用以下正则表达式:

/^\+[0-9]+(-[0-9]+)+(;\+[0-9]+(-[0-9]+)+)*$/

匹配的内容:

+91-9743574891
+1-570-456-2233;+66-12324576

它不匹配的内容:

91-9743574891
+15704562233
6612324576

答案 3 :(得分:0)

你的正则表达式会与你允许的正则表达式匹配,但我会有更多的限制:

^\+?[0-9-]+(?:;\+?[0-9-]+)*$

here on Regexr

这意味着匹配可选的“+”后跟一系列数字和短划线。然后可以有任何数量的以分号开头的附加数字,然后是与第一个数字相同的模式。