我尝试使用以下正则表达式查找html字符串中的所有电子邮件:
RegExp
[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}
HTML
<a href="mailto:ddawson@gcitravel.net">ddawson@gcitravel.net</a></span>. </p>
我使用matcher.find()应该找到子串吗?当我执行搜索时,它是空的,任何想法为什么?
答案 0 :(得分:3)
默认情况下,正则表达式区分大小写,因此例如最后一部分.net
无法与.[A-Z]{2,4}
匹配。
要使正则表达式不区分大小写,请添加(?i)
标记
"(?i)[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}"
或使用Pattern.CASE_INSENSITIVE
标志进行编译。
Pattern.compile("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}",Pattern.CASE_INSENSITIVE);
答案 1 :(得分:2)
A-Z
只匹配大写字母,还有一个额外的\
。试试这个......
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-zA-Z]{2,4}
答案 2 :(得分:0)
当我们拥有新域名时,这种搜索电子邮件的方式已不再正确。此正则表达式无法在域site.berlin中找到任何电子邮件。扩展2,4,删除或查找
[A-Za-z0-9-+/.]*@[A-Za-z0-9/.-]*\\.*[A-Za-z]$
我没有足够的声誉对帖子发表评论,最长的TLD域名是.international,因此{2,4}将无法找到它并记住域名中包含点名称的域名.co.uk ,. de.com。域名也必须以字母结尾,不能是数字或特殊字符。电子邮件地址可能包含{+ 3}},例如+或 -