我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890

问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。

我用这个正则表达式,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

我如何添加它也验证另一种格式?我不擅长使用正则表达式。


当前回答

试试这个——它也包括国际格式的验证。

/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g

这个正则表达式验证以下格式:

(541) 754-3010国内 + 1-541-754-3010国际 拨打美国电话1-541-754-3010 从德国拨001-541-754-3010 191 541 754 3010从法国拨过来

其他回答

\\(?\d{3}\\)?([\-\s\.])?\d{3}\1?\d{4}

这将验证任何可变格式的电话号码:

\ \ (? \ d {3} \ \) ?找到3个被括号括起来的数字。

(\ [\ s \]) ?是否找到这些分隔符

\d{3}找到3个数字

\1使用第一个匹配的分隔符-这确保分隔符是相同的。因此(000)999-5555在这里将不生效,因为有空格和破折号分隔符,所以只需删除“\1”并替换为分隔符子模式(这样做也将验证非标准格式)。无论如何,您都应该为用户输入提供格式提示。

\d{4}找到4个数字

验证:

(000) 999 5555 (000) 999-5555 (000). 999.5555 (000) 999-5555 (000)9995555 000 999 5555 The 000-999-5555 000.999.5555 0009995555

顺便说一句,这是JavaScript的双重转义。

这是可行的:

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

的吗?字符表示前一组匹配0次或1次。组(-|\s)将匹配-或|字符。添加?在正则表达式中第二次出现此组后,允许您匹配10个连续数字的序列。

我不得不承认,核实电话号码是一项艰巨的任务。 至于这个具体的问题,我会改变正则表达式从

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)\d{4}$/

to

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

因为唯一多余的元素是最后的破折号/空格。

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

(123) 456-7890 +(123) 456-7890 + (123) 456-7890 +(123) -456-7890 +(123) -456-78-90 The 123-456-7890 123.456.7890 1234567890 + 31636363634 075-63546725

这是一个非常松散的选项,我更喜欢保持这种方式,大多数情况下,我在注册表单中使用它,用户需要添加他们的电话号码。 通常用户对强制执行严格格式规则的表单有麻烦,我更喜欢用户在显示或保存到数据库之前填写数字和格式。 http://regexr.com/3c53v

下面的REGEX将验证这些格式中的任何一个:

(123) 456-7890 The 123-456-7890 123.456.7890 1234567890

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