我想屏蔽以下字符:
(
)
/
>
<
]
[
\
"
,
;
|
我的模式有什么问题?
pattern="[^()/<>[]\,'|\x22]+"
原文由 Oron Bendavid 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想屏蔽以下字符:
(
)
/
>
<
]
[
\
"
,
;
|
我的模式有什么问题?
pattern="[^()/<>[]\,'|\x22]+"
原文由 Oron Bendavid 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.5k 阅读✓ 已解决
2 回答928 阅读✓ 已解决
1 回答939 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答802 阅读
1 回答806 阅读✓ 已解决
3 回答1.1k 阅读
它包含一个否定字符类,您无法在其中转义
]
符号。 _在字符类内部_,它*必须在 JS 中进行转义, _在字符类外部_,您 _不必对它进行转义_。因此,您的"[^()/<>[]\,'|\x22]+"
模式实际上意味着: 只匹配一个! character other than()/<>[
(with the[^()/<>[]
part) followed with a *sequence of,'
, -OR- (as|
is an交替运算符(如果未在字符类之外转义)双引号(与\x22
匹配)后跟一个或多个文字]
符号(如]
匹配文字]
在字符类之外,而+
是为其设置的量词。你其实需要
在字符类中,除了
]
之外,您还需要转义\
符号。还有一个-
如果它位于两个文字符号之间,但这里没有连字符。注意:默认情况下, HTML5 pattern 属性 值是锚定的,即整个 pattern 被包装成
^(?:
和)$
。您不必在模式之间放置^
和$
。