我有一個驗證規則下面的正則表達式:問題的簡單的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