[英]Android: OnTextChanged email validation is not working as expected
我正在使用下面的代碼來驗證電子郵件輸入
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
上執行此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
進行的。 我在這里做錯了什么?
@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;
mEditTextEmail.setError(null);
}
}
100%工作
嘗試這個 :
@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 {
mEditTextEmail.setError(null)
isValidated = true;
}
}
清除錯誤的正確輸入
使用內置的Email
模式檢查器方法:
@OnTextChanged(R.id.et_email)
public void checkCorrectEmail () {
if (!Patterns.EMAIL_ADDRESS.matcher(mEditTextEmail.getText().toString()).matches()){
isValidated = false;
mEditTextEmail.setError("Please enter a Valid E-Mail Address!");
mEditTextEmail.requestFocus();
}else {
isValidated = true;
mEditTextEmail.setError(null);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.