【发布时间】:2016-02-24 13:58:17
【问题描述】:
我正在尝试从 requestURI 中提取电子邮件地址,下面的正则表达式是基于 RFC-2822 的电子邮件正则表达式,它适用于验证
private final transient String EMAIL_REGEX =
"^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]"
+ "+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)"
+ "(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+"
+ "|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))"
+ "*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+"
+ "|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)"
+ "(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]"
+ "+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$";
我正在尝试重用相同的正则表达式来匹配并从 URI /something/users/myemail@email.com/somethingelse 中提取电子邮件地址,使用 Matcher.group(0) 我得到输出 /something/users/myemail@email.com 其中我的预期输出只是来自 URI 的电子邮件地址.
【问题讨论】:
-
您是否尝试删除
$和^? -
刚试过,返回整个字符串,我想只提取电子邮件地址..
-
整件事情都在逃跑有什么原因吗?
-
检查this demo。我在开头和结尾的两个否定字符类中添加了
/。