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

时间:2012-09-20 23:21:02

标签: javascript jquery regex jquery-validate

我找到a blog post,其中显示了为国际电话号码创建验证的方法。提供的代码是:

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');

1 个答案:

答案 0 :(得分:0)

如此处所述A comprehensive regex for phone number validation

剥离非数字字符并创建正则表达式以匹配数字和扩展名会更容易。

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