我为jquery验证插件提供了以下regex方法。
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");
目前,其验证的电话号码格式为: 203-123-1234
我需要像这样进行更改以验证: 2031231234
有没有人能给我一个简单快捷的解决方案?
发布于 2011-09-01 23:13:14
你可以替换
phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
有了这个
phone_number.match(/\d{10}/);
\d
表示匹配任意数字
和
{10}
意味着10倍
发布于 2011-09-01 23:10:41
去掉所有这些-?
序列可能是最快的方法--它们意味着0个或1个-
字符。
这将使其简化为:
/^(1)?(\([2-9]\d{2}\)|[2-9]\d{2})[2-9]\d{2}\d{4}$/
可以进一步简化为:
/^1?(\([2-9]\d{2}\)|[2-9]\d{2})[2-9]\d{6}$/
如果您还想禁用区号周围的括号,您可以进一步简化为:
/^1?[2-9]\d{2}[2-9]\d{6}$/
(从技术上讲,它不会与文字203-123-1234
匹配,因为紧跟在第一个-
后面的字符必须是2到9,所以我假设您只是在谈论格式,而不是那里的值)。
发布于 2011-09-01 23:13:05
我认为更好的方法是用更简单的版本改变整个表达式,如下所示:
/^[0-9]{10}$/
编辑,备注(请参阅注释):
这只是一个如何验证格式的有限示例:111-222-3333vs 1112223333,而不是正确的美国电话号码验证。
https://stackoverflow.com/questions/7272359
复制相似问题