java email提取正则表达式?

我想要一个正则表达式,它将从String中提取电子邮件地址(使用Java正则表达式)。

这确实有效。

这是真正有效的正则表达式。 我花了一个小时在网上冲浪并测试不同的方法,尽管谷歌在这些网页上排名第一,但大多数方法都没有用。

我想和你分享一个有效的正则表达式:

 [_A-ZA-Z0-9  - ] +(\\ [_ A-ZA-Z0-9  - ]。+)。* @ [A-ZA-Z0-9] +(\\ [A-ZA-z0- 9] +)*(\\。[A-ZA-Z] {2,})

这是原始链接: http : //www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

我不得不添加一些破折号以允许它们。 所以爪哇人的最终结果是:

final String MAIL_REGEX = "([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})"; 

将这个正则表达式测试程序插件安装到eclipse中,你就会有一段时间测试正则表达式的鲸鱼
http://brosinski.com/regex/

注意事项:
在插件中,只使用一个反斜杠进行字符转义。 但是,当您将正则表达式转换为Java / C#字符串时,您必须将它们加倍,因为您将执行两个转义,首先从Java / C#字符串机制中转义反斜杠,然后再转换为实际的正则表达式字符转义机制。

围绕正则表达式的各个部分,使用圆括号/椭圆来捕获其文本。 然后,您可以使用Java或C#regex中的组函数来查找这些部分的值。

([_A-Za-z0-9 – ] +)(\。[_ A-Za-z0-9 – ] +) @([A-Za-z0-9] +)(\。[A-Za-z0 -9] +)

例如,使用上面的正则表达式,以下字符串

 abc.efg@asdf.cde 

产量

 start=0, end=16 Group(0) = abc.efg@asdf.cde Group(1) = abc Group(2) = .efg Group(3) = asdf Group(4) = .cde 

组0始终是整个字符串匹配的捕获。

如果没有用椭圆包围任何部分,则只能检测匹配但无法捕获文本。

创建一些正则表达式而不是一个长期的全集正则表达式可能不那么令人困惑,因为您可以逐个编程地测试,然后决定应该合并哪些正则表达式。 特别是当您找到以前从未考虑过的新电子邮件模式时。

有点晚了,但还可以。

这是我用的。 只需将其粘贴到FireBug的控制台中即可运行。 在网页上查找“Textarea”(最有可能位于页面底部),其中包含A标签中找到的所有电子邮件地址的分隔列表。

  var jquery = document.createElement('script'); jquery.setAttribute('src', 'http://code.jquery.com/jquery-1.10.1.min.js'); document.body.appendChild(jquery); var list = document.createElement('textarea'); list.setAttribute('emaillist'); document.body.appendChild(list); var lijst = ""; $("#emaillist").val(""); $("a").each(function(idx,el){ var mail = $(el).filter('[href*="@"]').attr("href"); if(mail){ lijst += mail.replace("mailto:", "")+","; } }); $("#emaillist").val(lijst); 

Java的内置电子邮件地址模式( Patterns.EMAIL_ADDRESS )完美运行:

  public static List getEmails(@NonNull String input) { List emails = new ArrayList<>(); Matcher matcher = Patterns.EMAIL_ADDRESS.matcher(input); while (matcher.find()) { int matchStart = matcher.start(0); int matchEnd = matcher.end(0); emails.add(input.substring(matchStart, matchEnd)); } return emails; }