我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890
问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。
我用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (123) 456-7890或123-456-7890
问题是我的客户端(我不知道为什么,可能是客户端)想要添加另一种格式,连续的十个数字,像这样:1234567890。
我用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
当前回答
简单的正则表达式:/ \ b \ d {3} [-] ? \ d{3}[-]吗?\ d {4} \ b / g
看看这个格式,希望它有用: 444-555-1234 f: 246.555.8888 m: 1235554567
其他回答
首先,格式验证器显然只适用于NANP(国家代码+1)数字。您的应用程序是否会被拥有北美以外电话号码的人使用?如果是这样,你不想阻止这些人输入完全有效的(国际)号码。
其次,你的验证是不正确的。NANP数字的形式为NXX NXX XXXX,其中N为数字2-9,X为数字0-9。此外,区号和交换机不能采用N11形式(以两个1结尾),以避免与特殊服务混淆,除非非地理区号(800,888,877,866,855,900)中的号码可以有N11交换机。
因此,您的正则表达式将传递数字(123)123 4566,即使这不是一个有效的电话号码。你可以通过用[2-9]{1}\d{2}替换\d{3}来解决这个问题。
最后,我感觉你是在web浏览器中验证用户输入。请记住,客户端验证只是您为用户提供的便利;您仍然需要(再次)验证服务器上的所有输入。
TL;DR不使用正则表达式来验证复杂的现实数据,如电话号码或url。使用专门的库。
只是想添加一个解决方案,专门选择非本地电话号码(800和900类型)。
(\+?1[-.(\s]?|\()?(900|8(0|4|5|6|7|8)\3+)[)\s]?[-.\s]?\d{3}[-.\s]?\d{4}
阿根廷数据的RegExp: / ^((+[0 - 9]{1,3})) ?(([0 - 9]{8、13})|([0 - 9]{3、6})——([0 - 9]{4 7}))/美元
Valids:
X: from 8 to 13 numbersXXXXXXXX
separate numbers by a hyphen = X from 3 to 6; Y: from 4 to 7XXXX-YYYY
Z: from 1 to 3(+ Z) XXXXXXXX
if you use Z then (+ ) is mandatory.这个reg ex适用于国际电话号码和多种格式的移动手机号码。
下面是正则表达式: / ^ (+ {1} \ d {2,3} \ s ? [(] {1} \ d {1,3} [)] {1} \ s ? \ d + | + \ d {1} {2,3} \ s \ d + | \ d +) {1} [\ s | - ? \ d + ([\ s | - ? \ d +){1,2} /美元
下面是JavaScript函数
function isValidPhone(phoneNumber) {
var found = phoneNumber.search(/^(\+{1}\d{2,3}\s?[(]{1}\d{1,3}[)]{1}\s?\d+|\+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}$/);
if(found > -1) {
return true;
}
else {
return false;
}
}
这将验证以下格式:
+44 07988-825 465(用任意连字符组合代替空格,但+44后面必须只有空格)
+44(0) 7988-825 465(用连字符的任何组合代替空格,但连字符不能直接存在于(0)之前或之后,(0)之前或之后的空格不需要存在)
123 456-789 0123(以任何连字符组合代替空格)
123-123 123(以任何连字符组合代替空格)
123 123456(空格可以用连字符代替)
1234567890
所有格式都不能存在双空格或双连字符。
\\(?\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的双重转义。