带括号的电话号码的HTML5模式

Del*_*ung 7 regex html5

我有一个HTML5模式,适用于以下格式的电话号码:

111-222-3333
111 222 3333
(777)-888-9999
(777)888-9999
Run Code Online (Sandbox Code Playgroud)

但是如果用户输入

(777-999-9999
Run Code Online (Sandbox Code Playgroud)

它通过了验证.理想情况下,我希望这会抛出一个错误,因为括号显然没有关闭.这是我的模式:

pattern="^\(?\d{3}\)?[- ]?\d{3}[- ]?\d{4}$"
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?在这个问题上,我一直在墙上撞了好几个小时.谢谢!

Ber*_*rgi 14

两个括号的可选性彼此独立.使用替换:

pattern="(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}"
Run Code Online (Sandbox Code Playgroud)