简单正则表达式的问题

时间:2010-10-25 18:46:38

标签: javascript regex escaping

我在验证规则中有以下正则表达式:

^[a-zA-Z0-9',!;?~>+&\"\-@#%*.\s]{1,1000}$

但是,我可以输入我认为不应该被允许的======

我的想法是,-如果没有正确逃脱,可能会造成麻烦或者其他什么,但这是我的想法。

4 个答案:

答案 0 :(得分:5)

您通过转发-向我们展示的正则表达式不接受===。如果-未转义,===将被接受。请参阅this

正则表达式中的-是特殊的,如果它没有被转义并且被作为min和max参与范围的字符包围,则用作范围运算符:

[a-z]匹配任何小写字符。

[-az]匹配-az

[az-]匹配-az

[a\-z]匹配-az

[a-c-d-f]匹配abc-def 。第一个和最后一个-充当范围运算符,但中间的一个按字面意思处理。

在您的情况下,=位于"-@范围内,因此会匹配。

答案 1 :(得分:1)

.

匹配所有内容。你想要

\.

答案 2 :(得分:1)

-将被解释为范围指示符。如果您想匹配文字[],则需要将其放在-括号中的第一个或最后一个。

答案 3 :(得分:0)

你的正则表达式对我来说很好,但是如果我删除-的转义符合=。我相信你这样做了。