我嘗試使用下面的正則表達式找到的所有電子郵件中的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(),這是應該找到子是不是?當我執行搜索時,它是空的,任何想法爲什麼?
我嘗試使用下面的正則表達式找到的所有電子郵件中的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(),這是應該找到子是不是?當我執行搜索時,它是空的,任何想法爲什麼?
A-Z
只能匹配大寫字母,並且還有一個額外的\
。試試這個...
[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[a-zA-Z]{2,4}
額外的反斜槓無疑是因爲這是Java,他不得不將它加倍才能讓它在字符串文字中工作。所以這可能是正確的。 – ajb
正則表達式是如此例如最後一部分.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);
當我們有新的域名時,這種搜索電子郵件的方式不再正確。此正則表達式在域site.berlin中找不到任何電子郵件。延長2,4,刪除或查找
[A-Za-z0-9-+/.]*@[A-Za-z0-9/.-]*\\.*[A-Za-z]$
我沒有足夠的信譽發表意見後,AFAIR最長的TLD域名。國際這樣{2,4}不會找到它,並記住有關帶有根名稱內的點的域名,如.co.uk,.de.com。域也必須以字母結尾,它不能是數字或特殊字符。電子郵件地址可能包含delimiter,如+或 -
A-Z只能匹配大寫字母嗎? – fjc
與您的問題沒有直接關係,但是我建議將新的更長的TLD('.museum','.berlin'等)更改爲'{2,6}'的結尾。 – admdrew
啊哈!謝謝你,先生。 – cantread