Oro*_*vid 6 html regex forms validation
我想屏蔽以下字符:
(
)
/
>
<
]
[
\
"
,
;
|
Run Code Online (Sandbox Code Playgroud)
我的模式有什么问题?
pattern="[^()/<>[]\,'|\x22]+"
Run Code Online (Sandbox Code Playgroud)
我的模式有什么问题?
它包含一个否定字符类,您未能在其中转义]符号。在字符类内部,它*必须在 JS 中转义,在字符类外部,您不必对其进行转义。因此,您的"[^()/<>[]\,'|\x22]+"模式实际上意味着:匹配一个且仅匹配一个!字符以外的字符()/<>[(带有[^()/<>[]部分)后跟 * 序列,', -OR-(|如果没有转义到字符类之外,则为交替运算符)双引号(与 匹配\x22)后跟一个或多个文字]符号(作为]匹配)文字]字符类的外面,+是一个量词设置它。
你实际上需要
pattern="[^()/><\][\\\x22,;|]+"
Run Code Online (Sandbox Code Playgroud)
pattern="[^()/><\][\\\x22,;|]+"
Run Code Online (Sandbox Code Playgroud)
在字符类中,除了 之外],您还需要对\符号进行转义。并且-,如果它站立2字面中符号之间,但是你在这里有没有连字符。
注意:HTML5 模式属性值默认是锚定的,即整个模式被包装成^(?:和)$。您不必在模式之间放置^和$。
用于此属性的正则表达式语言与 JavaScript 中使用的相同,除了模式属性与整个值匹配,而不仅仅是任何子集(好像它隐含
^(?:在模式开头的 a)$和结尾)。
如果您的模式包含 a ],则应该使用 a 对其进行转义\,其他字符也需要转义,例如\在转义另一个值的上下文中未使用时:
<form><input pattern="[^()/<>[\]\\,'|\x22]+"><input type=submit value=test></form>Run Code Online (Sandbox Code Playgroud)