1

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

  1. 数字
  2. '+'
  3. '-'

有人可以帮助我如何使用 javascript 和正则表达式/正则表达式来实现这一点吗?

例子:

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

我尝试了以下方法:

^[0-9-+;]+$

我不确定这是否正确。

4

4 回答 4

1

你放-错了地方,所以你regex不工作。

试试这个(你的正则表达式,但稍作修改):

^[0-9+;-]+$

或者

^[-0-9+;]+$

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

  1. 转义连字符并使用\-,
  2. 将连字符放在字符类的开头或结尾。

因为连字符用于指定字符范围。因此,正则表达式引擎理解[0-9-+;]+匹配0to 99to之间的任何字符+(所有字符都具有十进制代码点57[char 9] 到43[char +] 并且它失败)和;.

于 2012-11-21T13:38:39.530 回答
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

只有指定的限制才能更严格,请参阅此处的工作。

于 2012-11-21T13:39:51.533 回答
0

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

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

它将匹配什么:

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

不匹配的内容:

91-9743574891
+15704562233
6612324576
于 2012-11-21T13:40:46.600 回答
0

您的正则表达式将与您允许的匹配,但我会更具限制性:

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

在 Regexr 上查看

That means match an optional "+" followed by a series of digits and dashes. Then there can be any amount of additional numbers starting with a semicolon, then the same pattern than for the first number.

于 2012-11-21T13:41:51.847 回答