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



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

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

我试图用正则表达式部分解决它:

Pattern

p = Pattern.compile("^[_A-Za-z0-9.]+@[a-z-]+\\.com$"(

这行不通。我发现即使

Pattern

p = Pattern.compile("^[_A-Za-z0-9.]+@[a-z-]+"(

即使对于像这样的 ID 也不起作用:test@domain.xyz .

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

请参阅下面的 java 代码:

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

返回:

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

您缺少|运算符:

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

请注意,它也不接受以连字符开头\结尾的域。如果您确实想接受它们:

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

正则表达式必须只允许在最后一个.运算符之后comnetorg

尝试下面的正则表达式

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

相关内容

最新更新