2017-08-17 32 views
2

我想寫一個正則表達式來匹配電子郵件,這樣它會拒絕兩個電子郵件地址[email protected][email protected]並匹配來自特定域的所有其他電子郵件地址。到目前爲止,我已經做了以下的模式:正則表達式拒絕特定的電子郵件

^([email protected]|[email protected])|(A-Z0-9)[A-Z0-9._%+-][email protected]$ 

到目前爲止,它是能夠拒絕我希望阻止的主電子郵件地址,但通過這次接受所有其他字符串。作爲替代方案,我寫了下面的正則表達式:

^(?!test|tes2)[A-Z0-9._%+-][email protected]$ 

然而,這種拒絕與任何測試或TES2完全啓動的所有模式。

什麼是更好的正則表達式來實現此場景?

+0

'但它接受所有其他字符串通過這個'...其他情況下,你的第一個正則表達式失敗/不滿意? –

+0

我的意思是,它接收除了被拒絕的字符串之外的所有字符串,這會破壞正則表達式的整個目的。 –

回答

1

「修復」您正則表達式,你需要確保你也測試@先行模式中來匹配testtes2爲完整的用戶名:

^([email protected]|[email protected])[A-Za-z0-9._%+-][email protected]\.com$ 
     ^ ^

記住逃脫點了。請參閱regex demo

但是,您可能希望用戶名部分限制較少,並且只使用\S+,而不是你的性格類:

^([email protected]|[email protected])\[email protected]\.com$ 
       ^^^ 

another regex demo\S+模式匹配除空白字符以外的任何1個或多個字符。