我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (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}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
当前回答
这个函数运行得很好:
let isPhoneNumber = input => { try { let ISD_CODES = [93, 355, 213, 1684, 376, 244, 1264, 672, 1268, 54, 374, 297, 61, 43, 994, 1242, 973, 880, 1246, 375, 32, 501, 229, 1441, 975, 591, 387, 267, 55, 246, 1284, 673, 359, 226, 257, 855, 237, 1, 238, 1345, 236, 235, 56, 86, 61, 61, 57, 269, 682, 506, 385, 53, 599, 357, 420, 243, 45, 253, 1767, 1809, 1829, 1849, 670, 593, 20, 503, 240, 291, 372, 251, 500, 298, 679, 358, 33, 689, 241, 220, 995, 49, 233, 350, 30, 299, 1473, 1671, 502, 441481, 224, 245, 592, 509, 504, 852, 36, 354, 91, 62, 98, 964, 353, 441624, 972, 39, 225, 1876, 81, 441534, 962, 7, 254, 686, 383, 965, 996, 856, 371, 961, 266, 231, 218, 423, 370, 352, 853, 389, 261, 265, 60, 960, 223, 356, 692, 222, 230, 262, 52, 691, 373, 377, 976, 382, 1664, 212, 258, 95, 264, 674, 977, 31, 599, 687, 64, 505, 227, 234, 683, 850, 1670, 47, 968, 92, 680, 970, 507, 675, 595, 51, 63, 64, 48, 351, 1787, 1939, 974, 242, 262, 40, 7, 250, 590, 290, 1869, 1758, 590, 508, 1784, 685, 378, 239, 966, 221, 381, 248, 232, 65, 1721, 421, 386, 677, 252, 27, 82, 211, 34, 94, 249, 597, 47, 268, 46, 41, 963, 886, 992, 255, 66, 228, 690, 676, 1868, 216, 90, 993, 1649, 688, 1340, 256, 380, 971, 44, 1, 598, 998, 678, 379, 58, 84, 681, 212, 967, 260, 263], //extract numbers from string thenum = input.match(/[0-9]+/g).join(""), totalnums = thenum.length, last10Digits = parseInt(thenum) % 10000000000, ISDcode = thenum.substring(0, totalnums - 10); //phone numbers are generally of 8 to 16 digits if (totalnums >= 8 && totalnums <= 16) { if (ISDcode) { if (ISD_CODES.includes(parseInt(ISDcode))) { return true; } else { return false; } } else { return true; } } } catch (e) {} return false; } console.log(isPhoneNumber('91-9883208806'));
其他回答
\\(?\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}$/
to
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
因为唯一多余的元素是最后的破折号/空格。
只是想添加一个解决方案,专门选择非本地电话号码(800和900类型)。
(\+?1[-.(\s]?|\()?(900|8(0|4|5|6|7|8)\3+)[)\s]?[-.\s]?\d{3}[-.\s]?\d{4}
这个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
所有格式都不能存在双空格或双连字符。
正则表达式
使用以下Regex模式:
/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im
这样的:<输入模式 ="/^[\+]?[(]?[ 0 - 9] {3} [)] ? [\ s \。]? [0 - 9]{3}[\ s \。]吗?[0 - 9] {4 6} $ / im”> *
有效的格式:
(123) 456-7890, (123) 456-7890, 123-456-7890, 123.456 7890。, 1234567890, + 31636363634前 075-63546725