Java 仅从域列表进行电子邮件验证

Java 仅从域列表进行电子邮件验证,java,android,validation,email,Java,Android,Validation,Email,我想通过edittext验证电子邮件地址输入。我见过使用模式的一般电子邮件验证,但我有一个带有有效电子邮件域的Arraylist。我只想验证此域列表中的电子邮件地址 我试了很多,但都没成功。请帮忙:) 当前代码: public boolean isEmailValid(String email) { String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" + "\\.(abc.com

我想通过edittext验证电子邮件地址输入。我见过使用模式的一般电子邮件验证,但我有一个带有有效电子邮件域的Arraylist。我只想验证此域列表中的电子邮件地址

我试了很多,但都没成功。请帮忙:)

当前代码:

public boolean isEmailValid(String email) {
    String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
            + "\\.(abc.com|abc.co|abc.nz|abc.org)$";

    Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);

    return matcher.matches();
}
String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
            + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
            + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
            + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";
谢谢

用于一般电子邮件验证的原始正则表达式:

public boolean isEmailValid(String email) {
    String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
            + "\\.(abc.com|abc.co|abc.nz|abc.org)$";

    Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);

    return matcher.matches();
}
String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
            + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
            + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
            + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";
试一试

而不是

\\.(abc.com|abc.co|abc.nz|abc.org)
\。字面意思是一个点,而不是“每个字符”。Java需要使用“”来避开反斜杠以获取\。作为正则表达式

编辑:删除\\。前面和转义域点就足够了,正则表达式和示例更新:

    String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
            + "(abc\\.com|abc\\.co|abc\\.nz|abc\\.org)$";
所以

带来

false
true
true
true
false

你能发布你尝试过的吗?@JaredRummler嗨,我已经更新了问题。请check@iitum学生:什么不起作用?你能提供你正在使用的测试方法吗?我只看了域名,没有看我知道你在别处找到的正则表达式。在你将它扩展到你的域列表之前,这个正则表达式有效吗?嗨,我已经用我用来验证一般电子邮件地址的原始正则表达式更新了这个问题,它工作得非常好。对于修改后的一个,我使用abc@abc.com但它不起作用我还不习惯这个界面。。。我再次编辑了正则表达式和示例。希望能有帮助,它很有效。我正在添加和额外\\。之前(abc.com | abc.co | abc.nz | abc.org)。谢谢你的帮助,伙计。:)