Java 查找结尾带有特定单词的电子邮件正则表达式

Java 查找结尾带有特定单词的电子邮件正则表达式,java,regex,Java,Regex,我知道这是一个老问题,但我无法解决一个问题,我想得到一个解决方案 我被要求验证电子邮件的正则表达式,以便@之前的字母由a-z、a-z、0-9、和组成。域之后,即@,应该有a-z或-。后面的最后一个值只能在com、net或org之间 我试图用正则表达式部分解决这个问题: 模式p=Pattern.compile(“^[\u A-Za-z0-9.]+@[A-z-]+\\.com$”) 这没用。我发现甚至 模式p=模式编译(“^A-Za-z0-9.]+@[A-z-]+”) 甚至对于像:test@doma

我知道这是一个老问题,但我无法解决一个问题,我想得到一个解决方案

我被要求验证电子邮件的正则表达式,以便
@
之前的字母由a-z、a-z、0-9、
组成。域之后,即
@
,应该有a-z或
-
。后面的最后一个值只能在
com
net
org
之间

我试图用正则表达式部分解决这个问题:

模式p=Pattern.compile(“^[\u A-Za-z0-9.]+@[A-z-]+\\.com$”)

这没用。我发现甚至

模式p=模式编译(“^A-Za-z0-9.]+@[A-z-]+”)


甚至对于像:
test@domain.xyz

您缺少
|
操作员:

^[_A-Za-z0-9.]+@[a-z]+[a-z-]+[a-z]+\.(com|net|org)$
请注意,它也不接受以连字符开头\结尾的域。如果您确实想接受这些条件:

^[_A-Za-z0-9.]+@[a-z-]+\.(com|net|org)$

这可能是你找到匹配项的方式。就像上面提到的@GalAbra一样,您缺少正则表达式的某些部分

请参见下面的java代码:

Pattern mPattern = Pattern.compile("^[A-Za-z\\._]+@[a-z\\-]+\\.(com|net|org)$", Pattern.MULTILINE);
Matcher mMatcher = mPattern.matcher("test@domain.org\ntest@do-main.com\nfoo@bar.net");
while(mMatcher.find()){
    System.out.println(mMatcher.group());
}
返回:

test@domain.org
test@do-main.com
foo@bar.net

Regex必须只允许
com
net
org
在最后一个
操作符之后

试试下面的正则表达式

^[_A-Za-z0-9\\.]+@[-a-z]\\.+(com|net|org)$

您不需要在字符类中转义点