Firefox 输入模式正则表达式范围
Firefox input pattern regex range
这与这个问题的问题相同:
Firefox error: Unable to check input because the pattern is not a valid regexp: invalid identity escape in regular expression
在 <input>
模式属性中使用转义字符时,Firefox 会向控制台抛出这些错误:
Unable to check <input
pattern='^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$'>
because the pattern is not a valid regexp: invalid identity escape in
regular expression
因此,在 <input>
字段上使用 pattern
属性时,不再需要对 unicode 字符进行转义。在那种情况下,用户只需停止转义他们的字符并将 \@\%
更改为 @%
,问题就解决了。
我有这个更复杂的正则表达式模式,我该如何将其更改为在 Firefox 中工作?
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$">
基本上它允许任何长度在 1..50 个字符之间的字符串,只要所有字符都在这些范围内:
- \u00A0-\uD7FF
- \uF900-\uFDCF
- \uFDF0-\uFFEF
- a-z
- A-Z
以及空格、撇号和连字符。快速搜索可以看到它的 \u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa
部分在各种正则表达式中得到了相当广泛的应用。我只是看不出究竟要使用什么来代替转义的 unicode 字符引用。
您需要删除单引号前的转义反斜杠。
请注意,在常规 HTML5 pattern
字段中,不必在模式 start/end 处使用 ^
和 $
锚作为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>
这与这个问题的问题相同:
Firefox error: Unable to check input because the pattern is not a valid regexp: invalid identity escape in regular expression
在 <input>
模式属性中使用转义字符时,Firefox 会向控制台抛出这些错误:
Unable to check
<input pattern='^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$'>
because the pattern is not a valid regexp: invalid identity escape in regular expression
因此,在 <input>
字段上使用 pattern
属性时,不再需要对 unicode 字符进行转义。在那种情况下,用户只需停止转义他们的字符并将 \@\%
更改为 @%
,问题就解决了。
我有这个更复杂的正则表达式模式,我该如何将其更改为在 Firefox 中工作?
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$">
基本上它允许任何长度在 1..50 个字符之间的字符串,只要所有字符都在这些范围内:
- \u00A0-\uD7FF
- \uF900-\uFDCF
- \uFDF0-\uFFEF
- a-z
- A-Z
以及空格、撇号和连字符。快速搜索可以看到它的 \u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa
部分在各种正则表达式中得到了相当广泛的应用。我只是看不出究竟要使用什么来代替转义的 unicode 字符引用。
您需要删除单引号前的转义反斜杠。
请注意,在常规 HTML5 pattern
字段中,不必在模式 start/end 处使用 ^
和 $
锚作为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>