这与此问题存在同样的问题:
在<input>
模式属性中使用转义字符时,Firefox会将这些错误抛出到控制台:
无法检查
<input pattern='^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$'>
因为该模式不是有效的正则表达式:无效的身份转义 正则表达式
因此,在pattern
字段上使用<input>
属性时,不再需要转义unicode字符。在这种情况下,用户只需要停止转义其字符并将\@\%
更改为@%
,问题就解决了。
我有这个更复杂的正则表达式模式,如何将其更改为在Firefox中工作?
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$">
基本上,只要所有字符都在这些范围内,它就允许长度在1到50个字符之间的任何字符串:
以及空白,撇号和连字符。快速搜索看到它的\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa
部分被广泛用于各种正则表达式。我只是没有看到使用的确切内容而不是转义的unicode字符引用。
答案 0 :(得分:2)
您需要在单引号前删除转义反斜杠。
请注意,在常规的HTML5 pattern
字段中,不必在模式的开头/结尾使用^
和$
个锚点,因为HTML5 pattern attribute包含了传递的内容^(?:
和)$
的模式。 但,根据您的反馈, Abide 验证可以绕过此并将 unanchored 模式传递给正则表达式引擎。因此,你应该保留锚点。
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s'-]{1,50}$">
快速演示:
<form>
<input type="text" pattern="[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s'-]{1,50}">
<input type="submit">
</form>
&#13;