【发布时间】:2019-05-30 17:51:30
【问题描述】:
我编写了以下正则表达式来确定国内或国际电话号码是否具有正确的模式。
/^(00|0|[+])([-][0-9]|[0-9]){1,13}[0-9]/
可以通过将数字拆分为国家代码和电话号码来改进模式,但这并不重要。
感谢您的帮助
编辑:这是代码。这应该不是问题,因为其他正则表达式运行良好。 oChanged 是一个文本输入。
function verification(oChanged, regex){
var val = $(oChanged).val();
var reg = new RegExp(regex);
if( !reg.test(val) ){
if( !$(oChanged).hasClass('notvalid') ){
$(oChanged).addClass('notvalid');
}
}else{
if( $(oChanged).hasClass('notvalid') ){
$(oChanged).removeClass('notvalid');
}
}
}
我用互联网上的一些正则表达式测试器对其进行了测试,它匹配了所有这些字符串,但是当我实现它时它不匹配。
它应该适用于例如004915773554660 +4915773554660 015773554660 0049157-7355-466-0
【问题讨论】:
-
在这里发布你的实现。
-
显示不起作用的代码 - 仅使用正则表达式可能还不够。还可以考虑使用像 libphonenumber 这样的专用库而不是正则表达式
-
在
[+]中似乎[ ]是多余的。它以 +ccAnnnnnnnn 格式的国际格式号码失败,其中 cc 是 2 位国家代码,A 是区号,n 是 8 位固定电话或手机号码。 “国家”是如何确定的? -
@kristaps 该代码适用于其他正则表达式(希望它是正确的复数形式)。
-
而@RobG national 我们会是没有国家代码的数字,例如:015773554660 或 030333555。你说得对,我也认为括号会是 Reundand,但没有它们我会变成“意外的量词”错误信息。我认为这是与
^和()的组合。也许我应该附加:我总是在 Internet Explorer 中测试这些东西。我的意思是……
标签: javascript regex