2014-09-10 51 views
1

我使用正則表達式驗證電子郵件地址。我想測試的條件如下:在名稱,符號@用於檢查重複字符的電子郵件的正則表達式

最低的3

字符,最少3個字符的域名,一個點,第一部分不超過3個重複字符

我試着這個正則表達式,並且對於除了最後一個以外的所有情況都可以正常工作

/^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9.-]{3,}\.[A-Za-z]{2,4}$/ 

它不檢查點

不正常後重復字符(任何字符)(。):測試@測試。 ccccom[email protected]

確定:[email protected]

不知道什麼是錯的我的RE的最後一部分。

任何輸入將不勝感激。

+0

僅有一個忠告:滴「在結構域的第一部分的最小3個字符」 *要求*。有少於3個字符的有效域名(例如wp.pl) – 2014-09-10 13:25:24

回答

2

您可以使用以下正則表達式:

^(?!.*([A-Za-z0-9])\1{3})[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9-]{3,}\.[A-Za-z]{2,4}$ 

所做的更改:

(?!.*([A-Za-z0-9])\1{3}) - 這是一種消極的前瞻,使得確保沒有字符連續重複三次相比更多。

除了從第二個字符類中刪除.之外,正則表達式的其餘部分與它相同。

RegEx Demo


如果你想在最後.後,不允許重複字符,那麼你可以改用以下:

^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9-]{3,}\.(?!([A-Za-z0-9])\1{3})[A-Za-z]{2,4}$ 

RegEx Demo

+0

@Murali,是否可以在最後一部分的電子郵件地址中的點(。)之後檢查重複字符? – Chirag 2014-09-10 13:29:41

+0

@Chirag:當然,只要將負向前視移動到'.'後面即可。查看更新後的答案。 – 2014-09-10 13:41:50

+0

@Murali,非常感謝。它工作正常。 – Chirag 2014-09-11 10:08:18

0

這會不會讓更多比最後一個點之後的三個重複字符,

^[A-Za-z0-9._%+-]{3,}\@[A-Za-z0-9.-]{3,}\.(?:(?!(.)\1{3})[a-zA-Z]){2,4}$ 

DEMO

相關問題