2011-11-05 32 views
4

我只是學習使用javascript進行正則表達式匹配,並對下面描述的場景有疑問。使用javascript匹配字符串中任意長度的字符的正則表達式?

我試圖驗證電子郵件,以下條件:

格式應該是[email protected]其中
A) 「XXX」, 「YYY」 和 「ZZZ」 部分 只能小寫之間取值a和z
B)ZZZ的長度, YYY和XXX份是任意的(應該是雖然最小的一個)

現在我明白我可以建立這樣的正則表達式: 編輯: 更正REG EXP /[a-z][email protected][a-z]+\.[a-z]+/

和上述評估會像 「[email protected]」 作爲真正的字符串。

但我擔心的是,在上述表達式中,如果我提供了"[email protected]",那麼它將再次評估爲真。現在,如果我修改reg ex爲**/[a-z]{1,}@[a-z]+\.[a-z]+/**,即使那麼它會評估"[email protected]"爲真,因爲「a」作爲第一個字符的存在。

所以,我想知道如何匹配電子郵件"[email protected]"中的第一部分「xxx」,它以從第一個字符開始檢查整個字符串直到達到@符號的條件a到z爲有效值。

換句話說,正則表達式不應該在意電子郵件的用戶名部分的長度,並且不管輸入的字符數量多少,都應該根據指定的正則表達式條件對其進行測試,並且應該對該集合進行測試字符從索引1到@的索引。

+0

爲什麼你認爲「[email protected]」將evalute是真的:

/^[a-z]{1,}@[a-z]+\.[a-z]+$/ 

您可以在這個網上驗證了在測試這個表情? '/[a-z][email protected][a-z]+\.[a-z]+/.test("[email protected]。com「)=== false'(在@ -sign之後,你在郵件地址部分丟失了一個'+') – Andreas

+0

在輸入問題時,我錯過了+符號編輯了原始問題 –

回答

2

您的正則表達式不會將[email protected]顯示爲匹配項。但是,它會顯示[email protected]是一個匹配項。您缺少的正則表達式標記是字符串開頭的^和字符串結尾的$。這是你在找什麼:http://tools.netshiftmedia.com/regexlibrary/#

+0

砰!我確實使用了^,但從來沒有打擾過添加$在表達式的末尾,$ thing對我來說是一個新東西,謝謝,這個表達式工作。 –

3
/[a-z][email protected][a-z]\.[a-z]+/ 

將不匹配「[email protected]」,但會匹配「[email protected]」。您只允許在@和。之間輸入單個小寫字母。

此外,字符串「[email protected]」將不匹配。 [a-z] +表示尋找a和z之間的一個或多個字符......不包括數字,因此999不會匹配。

確實正則表達式

/[a-z][email protected][a-z]+/.[a-z]+/

你想要做什麼?

+1

」/ [az] + @ [az] + /。[az] + /「也是我的意思,不知何故,在輸入問題時,我錯過了@ [az]後需要的」+「 現在,我的原始問題 - 因爲[az] +會匹配「one」或更多,所以給出「a999」@也會返回true,因爲a匹配了模式,是正確的嗎?我在找什麼因爲是某種模式匹配,它會查看字符串的整個長度,從「[email protected]」到最後9個字符... –

相關問題