我非常接近我需要的完整正则表达式。但是我似乎无法获得可选的空白区域。
正则表达式
^(\(?\d{3}\)?\-?\d{3}\-?\d{4})$
要求 - 只有这四个
111-111-1111 - 作品
(111)111-1111 - 作品
(111)111-111 - 不捕获
1111111111 - 作品
如何在括号后添加可选空格?
答案 0 :(得分:4)
^(\(?\d{3}\)*\s?\-?\d{3}\-?\d{4})$
* \ s表示0或1个空格字符。
修改强> 实际上,我更喜欢这个版本,因为它允许破折号或空格,但不是两者。还有,?表示0或1,*表示0或更多:
^(\(?\d{3}\)?[\s,\-]?\d{3}\-?\d{4})$
答案 1 :(得分:4)
\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b
与3334445555
,333.444.5555
,333-444-5555
,333 444 5555
,(333) 444 5555
及其所有组合相匹配。{/ p>
更新
你正在遇到REGEX的限制,因此丑陋的解决方案确实是:
(\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}|\d{10})
答案 2 :(得分:1)
有时最好匹配三个完整表达式中的一个:
^(\d{11}|(\d{3}-){2}\d4|\(\d{3}\) ?\d\d\d-\d\d\d)$
答案 3 :(得分:0)
我不会根据格式处理正则表达式,而是处理输入的数字。这个问题显示了您应该采用的答案: