如何修复旧的javascript以使用jQuery validate验证国际电话号码?

如何修复旧的javascript以使用jQuery validate验证国际电话号码?,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我发现了一种为国际电话号码创建验证的方法。提供的代码是: jQuery.validator.addMethod('intlphone', function(value) { return (value.match(/^((\+)?[1-9]{1,2})?([-\s\.])?((\(\d{1,4}\))|\d{1,4})(([-\s\.])?[0-9]{1,12}){1,2}(\s*(ext|x)\s*\.?:?\s*([0-9]+))?$/)); }, 'Please enter a valid

我发现了一种为国际电话号码创建验证的方法。提供的代码是:

jQuery.validator.addMethod('intlphone', function(value) { return (value.match(/^((\+)?[1-9]{1,2})?([-\s\.])?((\(\d{1,4}\))|\d{1,4})(([-\s\.])?[0-9]{1,12}){1,2}(\s*(ext|x)\s*\.?:?\s*([0-9]+))?$/)); }, 'Please enter a valid phone number');
我相信它曾经适用于我,但有些东西已经改变了——可能是jQuery的更新版本——我遇到了以下错误:

Uncaught SyntaxError: Invalid regular expression: /^((+)?[1-9]{1,2})?([-s.])?(((d{1,4}))|d{1,4})(([-s.])?[0-9]{1,12}){1,2}(s*(ext|x)s*.?:?s*([0-9]+))?$/: Nothing to repeat 
我用我正在处理的项目创建了一个JSBin,但是我没有任何机会摆脱这个错误

如何修复旧的javascript以使用jQuery validate验证国际电话号码

ps:我相信我已经尝试过用以前版本的jQuery运行这个程序,但仍然会遇到错误。我不确定是什么改变了

最后使用了这个:

jQuery.validator.addMethod('intlphone', function(value) { return (value.match(/^((\+)?[1-9]{1,2})?([\-\s\.])?((\(\d{1,4}\))|\d{1,4})(([\-\s\.])?[0-9]{1,12}){1,2}(\s*(ext|x)\s*\.?:?\s*([0-9]+))?$/)); }, 'Please enter a valid phone number');
如前所述

去掉非数字字符并创建一个只匹配数字和扩展名的正则表达式会容易得多

将此项添加到函数开头,以删除除x以外的所有非数字:
value.replace(“[^\d+x]”,“”)。match

它有一对未替换的
-
可能就是问题所在。尝试使用:
/^(\+)?[1-9]{1,2})([\-\s\.])((\(\d{1,4}))\d{1,4})([\-\s\.])?[0-9]{1,12}{1,2}(\s*(ext|x)\s*?:?\s*([0-9]+)$/