小编Mar*_*ark的帖子

为什么使用未转义破折号“-”字符的正则表达式似乎无法在 HTML 中的“pattern”属性中工作,但在 regex101 上测试时却可以工作?

<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 位数字的模式将被拒绝。

教科书的其他正则表达式验证很好。它似乎与浏览器无关,因为它在两种不同的浏览器上失败。

html regex

10
推荐指数
1
解决办法
488
查看次数

标签 统计

html ×1

regex ×1