2013-12-16 60 views

回答

3

您的模式要求在一段時間後出現連字符。雖然第二模式不要求該地址的第二部分包含了一段

([\w+.][email protected][\w.-]+) 

:試試這個:

([\w+.][email protected][\w-]{1,})(\.)([0-9a-zA-Z.-]+) 

Demonstration

或更簡單。

Demonstration

+0

這個正則表達式只匹配列表中的第一個電子郵件地址,沒有別的。 – sergserg

+0

@Serg我已經從你的問題完全相同的工具測試它。它匹配所有的輸入模式。 –

+0

奇怪它現在工作。工作得很好:) – sergserg

1

你的正則表達式:

([\w+\.][email protected][\w]{1,})(\.)([0-9a-zA-Z\.\-]{1,}) 

這將使連字符作爲唯一的最後一個字符。

要允許它在任何地方使用:

^([\w+.-][email protected][\w-])(\.)([0-9a-zA-Z.-])$ 

或允許它僅之間使用(除第一個和最後的位置):

^[\w+.-]*@\w[\w-]*\.[\w-]*[0-9a-zA-Z.]+$ 

工作演示:http://regex101.com/r/lQ1nV7

+0

這不會只允許一個字符出現在最後? – Cfreak

+0

這不適用於他的示例。我認爲你已經在錯誤的角色類中加了'-'。 – eldarerathis

+0

是的,我意識到並糾正了(希望) – anubhava

1

你連字符的代碼將出現在在域名先內後外檢查字符段。您需要之前將其添加到匹配塊域名:

([\w+\.][email protected][\w\-]{1,})(\.)([0-9a-zA-Z\.\-]{1,}) 
      ^^---- check here as well. 

在現實中,我將尋找一個更全面的電子郵件正則表達式 - 你有一個似乎並不足夠強大的恕我直言。

0

你不匹配「[email protected]」形式的字符串,正如你所看到的不是你想要的。

([\w+\.]+)@([0-9a-zA-Z\.\-]{1,})\.com 
([\w+\.]+)@([0-9a-zA-Z\.\-]{1,})\.([\w]{1,})