2013-03-25 48 views
0

我怎麼能改寫這個正則表達式,以匹配所有的電子郵件地址,而不是那些
其中包含「的Hotmail,Gmail和雅虎」 。到目前爲止,我寫了這個:C#-Regular表達的電子郵件,但不包括「的Hotmail,Gmail,雅虎」

^([a-zA-Z0-9_\-\.]+)@(?<!hotmail|gmail|yahoo)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ 
+0

更多的本地化版本:_ 「C#電子郵件-Regular表達,但不包括‘[email protected]’」 _ – gdoron 2013-03-25 09:42:57

+2

**不要使用正則表達式來驗證E-電子郵件地址!** http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address – Carsten 2013-03-25 09:43:01

+0

好的。我會在c#中完成。謝謝你的建議 – 2013-03-25 09:50:57

回答

2

更改通過刪除<負回顧後爲負先行,並且如下

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(?!hotmail|gmail|yahoo)(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ 

上述假設"hotmail,gmail and yahoo"將直接按照@重新定位。

較短相當於:

@"^([\w.-]+)@(\[(\d{1,3}\.){3}|(?!hotmail|gmail|yahoo)(([a-zA-Z\d-]+\.)+))([a-zA-Z]{2,4}|\d{1,3})(\]?)$" 
+0

謝謝你多多。它的工作原理。 – 2013-03-25 10:08:54

相關問題