JavaScript中用于电话号码的正则表达式

4

我正在使用正则表达式验证用户的电话号码。我有一组电话号码验证要求,但对正则表达式并不了解。请问是否有人能够帮助我提供一个匹配我的要求的正则表达式?这里的验证非常简单。

条件

 1. It should allow numbers from 0-9.
 2. It should allow + sign. (+ sign is not mandatory but not allow after even a single letter (ie: should be placed at front.)).
 3. It should allow - sign. (- sign is also not mandatory and can be placed anywhere)
 4. It should allow empty space everywhere.
 5. No dots or no other chars allowed except the above said things.

正确的值

+65-12345678
65-12345678
6512345678
65 12345678
65 123 45678
65 123-45678
+65 123-45678
1234

错误的值

12345+86666
123alpha

谢谢


首先,明确验证规则,即您想匹配哪些模式。 其次,请尝试发布您已经尝试过的内容以及您所面临的问题。 - Ali Shah Ahmed
3个回答

8
根据您的样例,尝试这样做:
^(?:\+?\d{2}[ -]?\d{3}[ -]?\d{5}|\d{4})$

它将匹配所有正确的值。

描述:

正则表达式可视化

演示:

http://regexr.com?340nf


2
感谢提供解释性图表 :) - Immortal
这是一个很棒的答案,因为它直接回答了OP的问题,同时提供了清晰的解释,对于那些学习正则表达式的人来说是一个很好的资源。 - Brian Risk

7
只是帮助您建立一些概念。
以下正则表达式将匹配您提供的前七个输入。
/^\+?\d{2}[- ]?\d{3}[- ]?\d{5}$/
\+?可以匹配一个加号符号。其中的?使得加号符号是可选的。
\d{2}匹配两个数字。
[- ]?匹配一个破折号或者一个空格。 ?使得破折号或者空格的出现是可选的。
\d{5}然后匹配5个数字。
^$是起始和结束锚点。

3
基于您的样本,尝试使用这个模式。
^(?:\+?\d{2}[ -]?[\d -][\d -]+)$

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