电话号码验证正则表达式应以加号开头,前面跟着数字。

10

我试图验证电话号码,但是无法成功。

我的要求是电话号码只包含数字和 +(加号符号)。 + 只能作为第一个字符。

例如:+123456489

我正在使用这个正则表达式,但它不起作用:

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

提前致谢。


正则表达式是 ^\+?\d+$。在 HTML 的 pattern 属性中,它看起来像 pattern="\+?\d+"。如果你需要限制数字的位数,将 \d+ 替换为 \d{n},其中 n 是你想要的确切位数。 - Wiktor Stribiżew
6个回答

16

我会使用这个:

^\+?\d*$

从开头匹配加号,然后是任何数字、破折号、空格、点或括号。

在这里查看示例:http://regex101.com/r/mS9gD7


2
只允许使用数字和加号的内容。 - Sami
3
在这种情况下,更简单的正则表达式为:^\+?\d*$。它的含义是匹配一个可能包含加号的纯数字字符串。 - brandonscript

9

电话号码不能以 -(破折号)开头。 - hakkikonu

8

如果您只想允许数字开头的加号符号(+),并且不希望允许任何其他字符或符号,那么请尝试以下正则表达式:

var regEx = /^[+]?\d+$/;
regEx.test("+123345"); // this will be true
regEx.test("++123345"); // this will be false
regEx.test("1+23345"); // this will be false
regEx.test("111222"); // this will be true

2
^\+[0-9]+$

尝试使用上述正则表达式。您可以在此处进行测试http://gskinner.com/RegExr/。您是否还想验证长度?

2

^[0-9]+[0-9]*$
尝试这个,它有效。


1
谢谢您的回答!如果您能解释一下这个程序是如何运作以及为什么会这样工作,那将非常好。 - Janis Jansen
开头可以有一个可选的+,为何需要两个字符类却只需要一个? - Toto

-2

你可以试试这个 ^+[1-9]{1}[0-9]{10}$


为什么是[1-9]{1}然后是[0-9]{10}? - Srb1313711
我猜这是为了强制第一个数字不同于0。但'{1}'部分并没有什么作用。 - Joao Raposo
所有的电话号码不都是以0开头吗? - Srb1313711
我不确定,但我认为当你有+(加号)时,你就没有0。我只是指出了那个正则表达式的含义。 - Joao Raposo
在正则表达式中,"+"符号允许您使用“+”代替“00”。 - Henry
@HenryTshobo 这个问题涉及到 '[1-9]{1}' 和 '[0-9]{10}' 位,除非你想匹配像 +012345678 这样的数字。 - Joao Raposo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接