2010-10-25 83 views
2

我有一个验证规则下面的正则表达式:问题的简单的regex

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

不过,我可以进入======,我认为不应该被允许。

我的想法是,不知何故-可能会导致麻烦,如果没有适当逃脱或某事,但这是我的头。

+1

伊顿,问一个问题;你想做什么? – Brad 2010-10-25 18:50:06

+0

你想逃避'*'和'.'吗?我不是正则表达式专家,但我知道那些是特殊字符。 – Starkey 2010-10-25 18:50:24

+0

在萤火虫中,这将返回false。你确定这是正则表达式,而不是其他地方的胶水代码? '/^[a-zA-Z0-9',!;?~>+&\"\[email protected]#%*.\s]{1,1000}$/.test("======” )' – 2010-10-25 19:07:45

回答

5

您向我们显示的-转义的正则表达式不接受===
但是如果-未被转义,则===将被接受。见this

一个-一个正则表达式里面是特殊的,作为经营者的范围,如果它不逃了出来,是由参与的最小和最大范围内的字符包围:

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

[-az]匹配-az

[az-]匹配-az

[a\-z]匹配-az

[a-c-d-f]匹配abc-def。第一个也是最后一个-充当范围运算符,但中间的那个被直接处理。

在你的情况下,=来自"[email protected]范围,因此得到匹配。

+0

非常感谢你:) – 2010-10-25 19:06:01

+4

+1回答非问题。 – Brad 2010-10-25 19:06:06

1
. 

匹配所有内容。你想

\. 
+3

好吗?它在这些括号内:'[]' – Harmen 2010-10-25 18:50:57

+0

我也很确定这是问题 – levu 2010-10-25 18:58:26

+0

呃,是的,其实我完全错了。继续:) – 2010-10-25 19:05:29

1

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

0

你的正则表达式适合我。但如果我删除了 - 它匹配=。我确定你会这么做。