2014-04-01 87 views
1

我嘗試使用下面的正則表達式找到的所有電子郵件中的HTML字符串:這個正則表達式爲什麼不匹配任何東西?

RegExp 
[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4} 

HTML 
<a href="mailto:[email protected]">[email protected]</a></span>. </p> 

我使用matcher.find(),這是應該找到子是不是?當我執行搜索時,它是空的,任何想法爲什麼?

+4

A-Z只能匹配大寫字母嗎? – fjc

+2

與您的問題沒有直接關係,但是我建議將新的更長的TLD('.museum','.berlin'等)更改爲'{2,6}'的結尾。 – admdrew

+0

啊哈!謝謝你,先生。 – cantread

回答

2

A-Z只能匹配大寫字母,並且還有一個額外的\。試試這個...

[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[a-zA-Z]{2,4} 
+1

額外的反斜槓無疑是因爲這是Java,他不得不將它加倍才能讓它在字符串文字中工作。所以這可能是正確的。 – ajb

3

正則表達式是如此例如最後一部分.net不能與.[A-Z]{2,4}匹配的情況下,在默認情況下是敏感的。

爲了使您的正則表達式不區分大小寫加(?i)標誌

"(?i)[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}" 

Pattern.CASE_INSENSITIVE標誌編譯。

Pattern.compile("[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}",Pattern.CASE_INSENSITIVE); 
+1

謝謝!愚蠢的錯誤>。< – cantread

+0

@ user2774147發生在最好的:) – Pshemo

0

當我們有新的域名時,這種搜索電子郵件的方式不再正確。此正則表達式在域site.berlin中找不到任何電子郵件。延長2,4,刪除或查找

[A-Za-z0-9-+/.]*@[A-Za-z0-9/.-]*\\.*[A-Za-z]$ 

我沒有足夠的信譽發表意見後,AFAIR最長的TLD域名。國際這樣{2,4}不會找到它,並記住有關帶有根名稱內的點的域名,如.co.uk,.de.com。域也必須以字母結尾,它不能是數字或特殊字符。電子郵件地址可能包含delimiter,如+或 -

相關問題