我有電子郵件的字符串「[email protected]; [email protected]; [email protected]」正則表達式,如果所有的話中包含特定符號
如何編寫簡單的正則表達式來檢查是否所有單詞包含[@。]至少在單詞中有一次?
我有電子郵件的字符串「[email protected]; [email protected]; [email protected]」正則表達式,如果所有的話中包含特定符號
如何編寫簡單的正則表達式來檢查是否所有單詞包含[@。]至少在單詞中有一次?
無需正則表達式:
bool allOk = str.Split(';').All(email => email.Count(c => c == '@') == 1);
儘管這可能會導致erronous結果([email protected]_foo.com
是不是一個有效的電子郵件!)
也可以工作。 ... –
@FelicePollano正確,但「每封電子郵件中有一次@」是OP給出的規範。要完全檢查電子郵件,他可以使用split + regex或通用正則表達式。 – SimpleVar
是的,但OP詢問_如何檢查單詞中是否所有單詞都包含[@。],並且我回答了問題。 –
我不認爲正則表達式是必要的,但這裏的模式我會使用; \b[a-zA-Z0-9][email protected][a-zA-Z0-9]+\b
\b
是詞邊界,然後我有字母數字字符集。 +
表示前一個字符的一次或多次出現。所以它是從單詞邊界開始說的,它可以有0個或更多的字符,然後是一個或多個任何字母數字字符,後跟一個字邊界。
我想在javascript中使用這個表達式。 「\ b。* @。* \ b」不正確,因爲它不驗證「[email protected] test」。 – Reno
不符合。*也符合空格或等的邊界。 –
@Reno它匹配「[email protected]」爲什麼它應該匹配電子郵件地址結束後的一些隨機單詞?如果這就是你想要的尾部字邊界符號,而不是看起來是分號的分隔符。是的,你可能想用一些字符集替換'。*',後面加上'*',就像'[a-zA-Z0-9] *' – evanmcdonnal
你可以試試:
[_a-zA-Z0-9-][email protected][_.a-zA-Z0-9-^;]+;?
是一些字符,然後@再加上一些字符不';'隨後是可選的; look at the demo here。
上@jsfviky的回答這個簡單的變化使得在兩個域級別和本地部分,也爲一次性風格的電子郵件地址的加號段和連字符的電子郵件地址:
[a-zA-Z0-9-\.\+]{1,}@(?:[a-zA-Z])[a-zA-Z\.-]{1,}.[a-zA-Z]{1,4}
現實,這是所有你需要的,但有效的電子郵件地址可能包含任何!#$%&'*+-/=?^_
{|}〜`所以你可能想這取決於使用情況而變化。
怎麼樣'a.b @ site.co.uk'?即使您有@; @; @; – SLaks