在我的练习中,我应该验证电话号码,其中正确的是:
1234567890
123-456-7890
123.456.7890
(123)456-7890
(123) 456-7890
456-7890
Run Code Online (Sandbox Code Playgroud)
我试过了[(]?[0-9][0-9][0-9][).-]? ?[0-9][0-9][0-9][.-]?[0-9][0-9][0-9][0-9],但它似乎也接受了类似的东西(123.456-7890.我怎么能处理这个?或者我应该采取完全不同的方式?
以下是一些无效的电话号码:
123-45-6789
123:4567890
123/456-7890
Run Code Online (Sandbox Code Playgroud)
Cas*_*yte -1
该模式适用于您的示例,我编写它时没有使用 java 转义符:
^(?>\(\d{3}\) ?|\d{3}[.-]?)?\d{3}[.-]?\d{4}$
Run Code Online (Sandbox Code Playgroud)
说明:
^ begining of the string
(?> open an atomic group
\(\d{3}\) ? 3 digits with parenthesis followed by a space or not
| OR
\d{3}[.-] 3 digits followed by . or - or not
) close atomic group
? the atomic group is optional
\d{3} 3 digits
[.-]? followed by a . or a - (optional)
\d{4} 4 digits
$ end of the string
Run Code Online (Sandbox Code Playgroud)