【发布时间】:2025-12-02 10:35:01
【问题描述】:
我正在使用以下代码来验证电子邮件输入
private boolean validateEmail(String email) {
String emailPattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
Pattern pattern = Pattern.compile(emailPattern);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
我在onTextChanged 上执行此操作。代码如下(我用的是ButterKnife)
@OnTextChanged(R.id.et_email)
public void checkCorrectEmail() {
if (!validateEmail(mEditTextEmail.getText().toString().trim())) {
isValidated = false;
mEditTextEmail.setError("Please enter email address");
mEditTextEmail.requestFocus();
} else {
isValidated = true;
}
}
问题是它不够智能。例如,如果我输入myemail@gmail.com,它仍然会显示错误消息。但是,如果我输入myemail@gmail.com,然后输入space,然后单击删除space,那么一切都很好,错误消失了。
以前此验证是在按钮的onClick 上进行的。我在这里做错了什么?
【问题讨论】:
标签: java android android-edittext email-validation