可能重复:
用于电话号码验证的综合正则表达式
我非常接近我需要的完整正则表达式。但是,我似乎无法获得允许的可选空白。
正则表达式
^(\(?\d{3}\)?\-?\d{3}\-?\d{4})$
要求 - 只有这四个
111-111-1111 - 工程
(111)111-1111 - 作品
(111) 111-111 - 不捕获
1111111111 - 作品
如何在括号后添加可选空格?
可能重复:
用于电话号码验证的综合正则表达式
我非常接近我需要的完整正则表达式。但是,我似乎无法获得允许的可选空白。
正则表达式
^(\(?\d{3}\)?\-?\d{3}\-?\d{4})$
要求 - 只有这四个
111-111-1111 - 工程
(111)111-1111 - 作品
(111) 111-111 - 不捕获
1111111111 - 作品
如何在括号后添加可选空格?
^(\(?\d{3}\)*\s?\-?\d{3}\-?\d{4})$
*\s 表示 0 或 1 个空格字符。
编辑: 实际上,我更喜欢这个版本,因为它允许破折号或空格,但不能两者兼而有之。还, ?表示 0 或 1,* 表示 0 或更多:
^(\(?\d{3}\)?[\s,\-]?\d{3}\-?\d{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
以及它们的所有组合。
更新
您遇到了 REGEX 的限制,因此丑陋的解决方案确实是:
(\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}|\d{10})
有时最好匹配三个完整表达式之一:
^(\d{11}|(\d{3}-){2}\d4|\(\d{3}\) ?\d\d\d-\d\d\d)$
我不会根据格式来处理正则表达式,而是根据输入的数字来处理。这个问题显示了你应该采用的答案: