我有一个验证规则下面的正则表达式:问题的简单的regex
^[a-zA-Z0-9',!;?~>+&\"\[email protected]#%*.\s]{1,1000}$
不过,我可以进入======
,我认为不应该被允许。
我的想法是,不知何故-
可能会导致麻烦,如果没有适当逃脱或某事,但这是我的头。
我有一个验证规则下面的正则表达式:问题的简单的regex
^[a-zA-Z0-9',!;?~>+&\"\[email protected]#%*.\s]{1,1000}$
不过,我可以进入======
,我认为不应该被允许。
我的想法是,不知何故-
可能会导致麻烦,如果没有适当逃脱或某事,但这是我的头。
您向我们显示的-
转义的正则表达式不接受===
。
但是如果-
未被转义,则===
将被接受。见this。
一个-
一个正则表达式里面是特殊的,作为经营者的范围,如果它不逃了出来,是由参与的最小和最大范围内的字符包围:
[a-z]
任何小写字符匹配。
[-az]
匹配-
或a
或z
。
[az-]
匹配-
或a
或z
。
[a\-z]
匹配-
或a
或z
。
[a-c-d-f]
匹配a
或b
或c
或-
或d
或e
或f
。第一个也是最后一个-
充当范围运算符,但中间的那个被直接处理。
在你的情况下,=
来自"[email protected]
范围,因此得到匹配。
非常感谢你:) – 2010-10-25 19:06:01
+1回答非问题。 – Brad 2010-10-25 19:06:06
-
将被解释为一个范围指标。如果您想要匹配文字-
,则需要将其放在[]
括号内的第一个或最后一个。
你的正则表达式适合我。但如果我删除了 - 它匹配=。我确定你会这么做。
伊顿,问一个问题;你想做什么? – Brad 2010-10-25 18:50:06
你想逃避'*'和'.'吗?我不是正则表达式专家,但我知道那些是特殊字符。 – Starkey 2010-10-25 18:50:24
在萤火虫中,这将返回false。你确定这是正则表达式,而不是其他地方的胶水代码? '/^[a-zA-Z0-9',!;?~>+&\"\[email protected]#%*.\s]{1,1000}$/.test("======” )' – 2010-10-25 19:07:45