<div class="formRow">
<label for="phone">Phone number</label>
<input name="custPhone" id="phone" type="tel" placeholder="(nnn) nnn-nnnn"
pattern="^\d{10}$|^(\(\d{3}\)\s*)?\d{3}[\s-]?\d{4}$" >
</div>
Run Code Online (Sandbox Code Playgroud)
这来自一本教科书(尽管已经有几年了),我不知道为什么浏览器只接受任何内容。
任何人都可以看到是什么可能阻止正则表达式完成其工作以验证 7 或 10 位电话号码并拒绝其他模式?
当我只使用表达式并在 regex101.com 上进行测试时,该表达式似乎在那里完成了它的工作。
^\d{10}$|^(\(\d{3}\)\s*)?\d{3}[\s-]?\d{4}$
在 regex101.com 上,1234567 将匹配,1234567890 将匹配,其他少于 7、多于 10 的模式以及包含 8 和 9 位数字的模式将被拒绝。
教科书的其他正则表达式验证很好。它似乎与浏览器无关,因为它在两种不同的浏览器上失败。