简单正则表达式的问题

问题描述 投票:2回答:4

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

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

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

我的想法是,如果没有适当的逃脱或某种东西,-可能会造成麻烦,但这是我的头脑。

javascript regex escaping
4个回答
5
投票

你用-逃脱向我们展示的正则表达式不接受===。 但如果-没有逃脱,===将被接受。见this

正则表达式中的-是特殊的,如果它没有被转义并被包含在范围中作为最小值和最大值的字符包围,则用作范围运算符:

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

[-az]匹配-az

[az-]匹配-az

[a\-z]匹配-az

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

在你的情况下,="-@范围内,因此得到匹配。


1
投票
.

一切都匹配。你要

\.

1
投票

-将被解释为范围指标。如果你想匹配文字[],你需要把它放在-括号中的第一个或最后一个。


0
投票

你的正则表达式适合我,但如果我删除-逃脱它匹配=。我相信你这样做。

© www.soinside.com 2019 - 2024. All rights reserved.