2010-10-25 92 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

你的正則表達式適合我。但如果我刪除了 - 它匹配=。我確定你會這麼做。