2009-12-07 36 views
0

我知道這是我的錯,它並不複雜,但我無法自己找到答案,所以我求求你幫助我建立這個RegEx。RegEx - 只有一個有效的電子郵件

我試圖避免用戶按行輸入多個電子郵件地址,所以我想限制「@」發生次數只有1次,並且還檢查沒有逗號(,)....

這裏是我已經使用檢查輸入的正則表達式的簡化版本....

\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b 

我怎麼能介紹一節,以檢查有沒有(@)在最後一部分?

在此先感謝

回答

3

儘量只添加一個^和一個$

^\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b$ 
+0

非常感謝,Beaner的解決方案還沒有的伎倆...... 現在我還在尋找,如果我能避免人們進入多個子域,像[email protected] .....但是即使不能......現在對我來說已經足夠了...... – user226639 2009-12-08 15:32:23

7

而不是使用一個正則表達式,你可以在@split字符串,並計算輸出數組有多少個元素了。

0

這是我目前正在使用。一個快速測試將它限制在一個有效的電子郵件中。

@"^(?!.*\.\.)[a-zA-Z0-9\w\._%&!'*=?^+-]*@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]*\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$" 
+0

右手就可以看出你在@之前不允許+,所以你沒有遵循標準。 – tloach 2009-12-07 20:34:16

+0

爲電子郵件編寫符合標準的正則表達式非常困難。 – jonnii 2009-12-07 20:42:52

+0

tloach是正確的。我相應地編輯了我的正則表達式。我希望每次訪問它時都會好一點。代碼審查是使stackoverflow有價值的事情之一。 – jac 2009-12-07 20:47:14

相關問題