我在验证规则中有以下正则表达式:
^[a-zA-Z0-9',!;?~>+&\"\-@#%*.\s]{1,1000}$
但是,我可以输入我认为不应该被允许的======
。
我的想法是,-
如果没有正确逃脱,可能会造成麻烦或者其他什么,但这是我的想法。
答案 0 :(得分:5)
您通过转发-
向我们展示的正则表达式不接受===
。如果-
未转义,===
将被接受。请参阅this。
正则表达式中的-
是特殊的,如果它没有被转义并且被作为min和max参与范围的字符包围,则用作范围运算符:
[a-z]
匹配任何小写字符。
[-az]
匹配-
或a
或z
。
[az-]
匹配-
或a
或z
。
[a\-z]
匹配-
或a
或z
。
[a-c-d-f]
匹配a
或b
或c
或-
或d
或e
或f
。第一个和最后一个-
充当范围运算符,但中间的一个按字面意思处理。
在您的情况下,=
位于"-@
范围内,因此会匹配。
答案 1 :(得分:1)
.
匹配所有内容。你想要
\.
答案 2 :(得分:1)
-
将被解释为范围指示符。如果您想匹配文字[]
,则需要将其放在-
括号中的第一个或最后一个。
答案 3 :(得分:0)
你的正则表达式对我来说很好,但是如果我删除-
的转义符合=
。我相信你这样做了。