我知道这是一个老问题,但我无法解决问题,我想得到一个解决方案。
我被要求验证电子邮件的正则表达式,以便@
之前的字母由 a-z、A-Z、0-9、.
和 _
组成。在域即@
之后,它应该有a-z或-
。后面的最后一个值只能在com
、net
或org
之间。
我试图用正则表达式部分解决它:
Patternp = Pattern.compile("^[_A-Za-z0-9.]+@[a-z-]+\\.com$"(
这行不通。我发现即使
Patternp = 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)$
正则表达式必须只允许在最后一个.
运算符之后com
、net
或org
尝试下面的正则表达式
^[_A-Za-z0-9\.]+@[-a-z]\.+(com|net|org)$