java email提取正则表达式?

Eug*_*neP 7 java regex email-validation

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

这确实有效.

Eug*_*neP 15

这是真正有效的正则表达式.我花了一个小时在网上冲浪并测试不同的方法,虽然谷歌排名靠前,但大多数方法都没有用.

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

[_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/

  • 对不起,这不对.对于加号(http://en.wikipedia.org/wiki/E-mail_address#Sub-addressing),它将失败(例如foo+@gmail.com).为电子邮件地址编写正确的正则表达式是非常/非常(如果不是不可能的话).另请参见http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378 (4认同)
  • 嗯,你是对的,我不知道加号可以成为任何电子邮件地址的一部分。I 可以很容易地添加到方括号之间。但我很确定 99.9% 的人不使用它,并且大多数电子邮件服务器不允许加号作为电子邮件地址的一部分。绝对同意,在某些情况下,无论使用什么正则表达式,电子邮件验证/提取都会失败。虽然这个对我有用,但我也见过其他人没有效果。 (2认同)

小智 5

我必须添加一些破折号才能允许它们。所以爪哇语的最终结果是:

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