Android에서 이메일 주소 (예 : 사용자 입력 필드)를 확인하는 좋은 방법은 무엇입니까? org.apache.commons.validator.routines.EmailValidator 를 사용할 수없는 것 같습니다. Android에 이미 포함되어 있거나 RegExp를 사용해야하는 다른 라이브러리가 있습니까?
답변
정규식을 사용하지 마십시오.
다음은 RFC 2822 를 준수하는 대부분의 전자 우편 주소를 올바르게 확인하는 정규식입니다 (org.apache.commons.validator와 마찬가지로 “user@gmail.com.nospam”와 같은 경우에는 여전히 실패 함). 루틴 .EmailValidator)
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
제공된 주소로 확인 이메일을 보내기 위해 이메일을 검증하는 가장 쉬운 방법 일 수 있으며 반송 된 다음 유효하지 않습니다.
기본 검사를 수행하려는 경우 양식에 있는지 확인할 수 있습니다. *@*
비즈니스 로직 별 유효성 검사가있는 경우 정규식을 사용하여 수행 할 수 있습니다 (예 : gmail.com 계정 등).
답변
또 다른 옵션은 API 레벨 8로 시작 하는 기본 제공 패턴입니다 .
public final static boolean isValidEmail(CharSequence target) {
if (TextUtils.isEmpty(target)) {
return false;
} else {
return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
}
또는
@AdamvandenHoven의 한 라인 솔루션 :
public final static boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
답변
다음 패턴은 K-9 메일에서 사용됩니다.
public static final Pattern EMAIL_ADDRESS_PATTERN = Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+"
);
기능을 사용할 수 있습니다
private boolean checkEmail(String email) {
return EMAIL_ADDRESS_PATTERN.matcher(email).matches();
}
답변
API 8 (android 2.2) 이후 패턴은 android.util.Patterns.EMAIL_ADDRESS
http://developer.android.com/reference/android/util/Patterns.html입니다.
따라서이를 사용하여 yourEmailString의 유효성을 검사 할 수 있습니다.
private boolean isValidEmail(String email) {
Pattern pattern = Patterns.EMAIL_ADDRESS;
return pattern.matcher(email).matches();
}
이메일이 유효하면 true를 반환
UPD :이 패턴 소스 코드는 다음과 같습니다.
public static final Pattern EMAIL_ADDRESS
= Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+"
);
따라서 API <8과의 호환성을 위해 직접 빌드 할 수 있습니다.
답변
이제 간단한 이메일 패턴 매 처가 있습니다
private static boolean isValidEmail(String email) {
return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
답변
이메일 유효성 검사에 간단한 한 줄 코드 사용
public static boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
처럼 사용 …
if (!isValidEmail(yourEdittext.getText().toString()) {
Toast.makeText(context, "your email is not valid", 2000).show();
}
답변
이것은 Android Studio 제안입니다.
public static boolean isEmailValid(String email) {
return !(email == null || TextUtils.isEmpty(email)) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}