我正在寻找验证电话号码的正则表达式。
以下是我希望我的正则表达式验证的内容:
接受格式:
5-555-555-5555
55-55-555-5555
55-555-555-5555
555-555-555-5555
5555-555-555-5555
我目前的代码如下:
^.*(?=.{14,17})(?=.*\-{3,})(?=.*[\d\-]).*$
允许使用3个以上的连字符,长度允许超过17个字符。
提前感谢您的帮助!
答案 0 :(得分:1)
这是一个丑陋的暴力版本,它只是明确地列出了4种有效格式:
^(\d-\d{3}-\d{3}-\d{4})|(\d{2}-\d{2}-\d{3}-\d{4})|(\d{2}-(\d{3}-){2}\d{4})|((\d{3}-){3}\d{4}$)|(^\d{4}-(\d{3}-){2}\d{4})$
以下是Rubular链接。
答案 1 :(得分:0)
这个怎么样:
/^(?=.{14,17}$)(\d+-){3}\d+$/
答案 2 :(得分:0)
你可以尝试这个
/(?=^.{14,17}$)^\d+-\d+-\d+-\d+$/.test('2332-32332-233-22')
(?=.{14,17})
首先断言使用前瞻,字符串的长度在14到17个字符之间。然后匹配以查看数字之间有三个连字符。 ^ and $
确保没有其他内容。
答案 3 :(得分:0)
我知道这已经过时了,但我接受了挑战并制作了一份经过编辑的非暴力版Amber的回答。
/^(?=.{14,17}$)\d{1,4}(?:\-\d{3}){3}\d$/
这能够强制执行格式(x {1,4} -xxx-xxx-xxxx),并且比Mark Wilkins的答案要短。
Amber的答案是不完整的,因为它没有强制执行格式(5-555-555-5555555在明确说明它不是有效格式时已经过验证),但它确实强制使用-1 char而不是Narendra Yadala的答案
编辑(14/01/2014):
这是一个简化的答案:
/^\d{1,4}(?:\-\d{3}){3}\d$/
我所做的很简单:我带走了前瞻。
在这种情况下没用。
这一个比Narendra Yadala的答案多-13个字符,而且比之前的字母多出-12个字符。