Regex optional white space in phone number
Possible Duplicate:
A comprehensive regex for phone number validation
我非常接近我需要的完整正则表达式。 但是我似乎无法获得可选的空白区域。
正则表达式
1
| ^(\(?\d{3}\)?\-?\d{3}\-?\d{4})$ |
要求 - 只有这四个
111-111-1111 - 作品
(111)111-1111 - 作品
(111)111-111 - 不捕获
1111111111 - 作品
如何在括号后添加可选空格?
-
你有没有尝试过" ?"?
-
我通常做的是删除非数字字符,并确保长度为10.然后将10位数字符串格式化为我认为它应该在数据库中的方式。
-
我必须遵守我所给出的严格规则,只显示了4种格式。
-
逃避括号? 把括号括在整个事物的周围? 为什么? 对不起,但对我来说,这是一个丑陋的正则表达式。 这是我的版本:/^[(]?\d{3}[)]?[-\s]?\d{3}-?\d{4}$/。 你想要的部分是在右括号后的[-\s]?,而不是\-?,其中连字符不需要转义。
\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b如何匹配3334445555,333.444.5555,333-444-5555,333 444 5555,(333) 444 5555及其所有组合。
更新
你正在遇到REGEX的限制,因此丑陋的解决方案确实是:
1
| (\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}|\d{10}) |
例
-
我不能允许所有其他组合。就是我列出的那些。
-
我不认为这是可能的,因为你想在一个破折号的同一个地方允许一个空间,但只有在a)之后才需要回顾另一个空间(。
-
更新......太丑了。
-
你发布的第二个似乎工作得很好。所有丑陋的谈话,你为什么这么反对呢?
-
这基本上是说尝试这个,如果它不起作用,试试这个,如果它不起作用试试这个...我个人的偏好是减少需要多次测试以找到匹配的任何东西的复杂性(无论实际使用,正则表达式,枚举反思等)。
-
这是否会在javascript中使用?例如:var re = new RegExp("( d {3} - d {3} - d {4} |( d {3}) s? d {3} - d {4} | d {10})"); valid = re.test(value);
1
| ^(\(?\d{3}\)*\s?\-?\d{3}\-?\d{4})$ |
* s表示0或1个空格字符。
编辑:
实际上,我更喜欢这个版本,因为它允许破折号或空格,但不是两者。 还有,? 表示0或1,*表示0或更多:
1
| ^(\(?\d{3}\)?[\s,\-]?\d{3}\-?\d{4})$ |
-
使用时derekslager.com/blog/posts/2007/09/…在括号后仍然没有捕获带空格的那个?
-
奇怪。我刚尝试过,它在你的链接上工作。这是我最初使用的工具:regexhero.net/tester
-
是的,我只是重新输入它们并且有效。很奇怪我不确定第一次发生了什么。
Somtimes最好匹配三个完整表达式中的一个:
<5233>
我不会根据格式处理正则表达式,而是处理输入的数字。这个问题显示了您应该采用的答案:
用于电话号码验证的全面正则表达式