我有以下用于jquery validate插件的正则表达式方法。
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
有人为我提供快速简便的解决方案吗?
答案 0 :(得分:3)
您可以替换
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次
答案 1 :(得分:2)
摆脱所有-?
序列可能是最快捷的方式 - 它们意味着零个或-
个字符。
这将把它减少到:
/^(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,所以我假设你只是在谈论格式而不是那里的值。)
答案 2 :(得分:2)
我认为更好的方法是用更简单的版本改变整个表达式,如下所示:
/^[0-9]{10}$/
已编辑,请注意(请参阅评论):
这只是如何验证格式的一个有限示例:111-222-3333 vs 1112223333,而不是正确的美国电话号码验证。
答案 3 :(得分:1)
如果您只想要十位数,那么
phone_number.match(/\d{10}/)
会做到的。如果你想匹配那里的任何其他条件(例如匹配1-2031231234和2031231234),你需要添加更多。
作为附注,你当前拥有的东西与203-123-1234不匹配,因为第一个连字符后面的第一个数字是1,并且它在那个地方寻找2-9。
答案 4 :(得分:0)
([0-9]{10}) this will match with 10 digit number.
答案 5 :(得分:0)
如果您想匹配所有格式,可以使用,包括203-123-1234和2031231234
编辑:我不是正则表达式专家,但我添加了“1-”支持/^(?:1-?)?[(]?\d{3}[)]?\s?-?\s?\d{3}\s?-?\s?\d{4}$/
顺便说一句,有一个非常好的AIR工具用于正则表达式,它叫做RegExr,您可以在这里获取桌面版http://www.gskinner.com/RegExr/desktop/或使用在线版http://gskinner.com/RegExr/。还有一个“社区”部分,其中包含许多有用的正则表达式。这就是我拿那个的地方。