我在一些网站上找到了这个代码,它工作得很完美。它验证电话号码是以下格式之一: (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}$/
我如何添加它也验证另一种格式?我不擅长使用正则表达式。
当前回答
验证电话号码+返回格式化数据
函数有效电话(str){ str = str.replace(/[^0-9]/g, ''); var l = 尺寸长度; if(l<10) 返回 ['错误', '电话号码长度< 10']; var tel = '', num = str.substr(-7), 代码 = str.substr(-10, 3), coCode = ''; if(l>10) { coCode = '+' + str.substr(0, (l-10) ); } tel = coCode +' ('+ code +') '+ num; 返回 [“成功”,电话]; } console.log(validTel('+1 [223] 123.45.67'));
其他回答
我建议使用一些更清晰的东西(特别是考虑到谁必须维护代码)……是什么:
var formats = "(999)999-9999|999-999-9999|9999999999";
var r = RegExp("^(" +
formats
.replace(/([\(\)])/g, "\\$1")
.replace(/9/g,"\\d") +
")$");
regexp是从一个清晰的模板构建的?添加一个新的将是一个无需动脑,甚至可能是客户自己可以做到这一点,在“选项”页面。
我要做的是忽略格式并验证数字内容:
var originalPhoneNumber = "415-555-1212";
function isValid(p) {
var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/;
var digits = p.replace(/\D/g, "");
return phoneRe.test(digits);
}
\\(?\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的双重转义。
每个人的答案都很棒,但我认为这里有一个更全面的答案……
这是为javascript匹配使用一个单一的数字在单行:
^(?!.*911.*\d{4})((\+?1[\/ ]?)?(?![\(\. -]?555.*)\( ?[2-9][0-9]{2} ?\) ?|(\+?1[\.\/ -])?[2-9][0-9]{2}[\.\/ -]?)(?!555.?01..)([2-9][0-9]{2})[\.\/ -]?([0-9]{4})$
如果您想在单词边界上匹配,只需将^和$更改为\b
我欢迎对这个解决方案提出任何建议、纠正或批评。据我所知,这与NANP格式(对于美国数字-我在创建此时没有验证其他北美国家)匹配,避免任何911错误(不能在区号或地区代码中),仅消除那些实际上无效的555数字(555的地区代码后面是01xx,其中x =任何数字)。
一个很简单的方法:
"9001234567".match(/^\d{10}$/g)