2013-06-04 22 views

回答

4

無需正則表達式:

bool allOk = str.Split(';').All(email => email.Count(c => c == '@') == 1); 

儘管這可能會導致erronous結果([email protected]_foo.com是不是一個有效的電子郵件!)

+0

也可以工作。 ... –

+0

@FelicePollano正確,但「每封電子郵件中有一次@」是OP給出的規範。要完全檢查電子郵件,他可以使用split + regex或通用正則表達式。 – SimpleVar

+1

是的,但OP詢問_如何檢查單詞中是否所有單詞都包含[@。],並且我回答了問題。 –

1

我不認爲正則表達式是必要的,但這裏的模式我會使用; \b[a-zA-Z0-9][email protected][a-zA-Z0-9]+\b

\b是詞邊界,然後我有字母數字字符集。 +表示前一個字符的一次或多次出現。所以它是從單詞邊界開始說的,它可以有0個或更多的字符,然後是一個或多個任何字母數字字符,後跟一個字邊界。

+0

我想在javascript中使用這個表達式。 「\ b。* @。* \ b」不正確,因爲它不驗證「[email protected] test」。 – Reno

+0

不符合。*也符合空格或等的邊界。 –

+1

@Reno它匹配「[email protected]」爲什麼它應該匹配電子郵件地址結束後的一些隨機單詞?如果這就是你想要的尾部字邊界符號,而不是看起來是分號的分隔符。是的,你可能想用一些字符集替換'。*',後面加上'*',就像'[a-zA-Z0-9] *' – evanmcdonnal

-2

如果你需要一個電子郵件驗證,試試這個正則表達式:

[A-ZA-Z0-9 - ] {1,} @([A-ZA-Z])一個? -ZA-Z] {1,} [A-ZA-Z] {1,4}

+0

這看起來不對。它匹配'a @ .b.c' – SimpleVar

+0

你是對的。固定:[a-zA-Z0-9-] {1,} @([a-zA-Z])∈[a-zA-Z] {1,} \ 4} – jsfviky

+0

電子郵件中允許使用'-'字符?我知道'_'是,甚至可能是'''......你可以用'\\ w'來縮短'[a-zA-Z0-9_]',順便說一句。 – SimpleVar

1

你可以試試:

[_a-zA-Z0-9-][email protected][_.a-zA-Z0-9-^;]+;? 

是一些字符,然後@再加上一些字符不';'隨後是可選的; look at the demo here

+0

順便說一下,這將匹配'!@#',這對應於帶有轉換的'123',並且不是電子郵件。 – SimpleVar

+0

@YoryeNathan正確,我們可以改進。+部分 –

+0

現在它不匹配'a_b @ xyz' - 不確定OP是否想支持帶有兩個點的電子郵件(例如[email protected]),但下劃線是絕對允許的。 – SimpleVar

0

上@jsfviky的回答這個簡單的變化使得在兩個域級別和本地部分,也爲一次性風格的電子郵件地址的加號段和連字符的電子郵件地址:

[a-zA-Z0-9-\.\+]{1,}@(?:[a-zA-Z])[a-zA-Z\.-]{1,}.[a-zA-Z]{1,4} 

現實,這是所有你需要的,但有效的電子郵件地址可能包含任何!#$%&'*+-/=?^_ {|}〜`所以你可能想這取決於使用情況而變化。

相關問題