이메일 주소의 유효성을 확인하려면 어떻게 해야 합니까?
Android?org.apache.commons.validator.routines에서 이메일 주소(예: 사용자 입력 필드)를 확인하는 좋은 기술은 무엇입니까?Email Validator를 사용할 수 없는 것 같습니다.Android에 이미 포함된 다른 라이브러리가 있습니까? 아니면 RegExp를 사용해야 합니까?
또 다른 옵션은 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();
}
}
OR
@Adamvanden의 한 줄 솔루션호벤:
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(안드로이드 2.2) 이후로 안드로이드.util이라는 패턴이 있습니다.패턴.EMAIL_ADDRESS http://developer.android.com/reference/android/util/Patterns.html
따라서 이를 사용하여 EmailString의 유효성을 확인할 수 있습니다.
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}" +
")+"
);
참조: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java
API < 8과의 호환성을 위해 직접 구축할 수 있습니다.
이제 간단한 전자 메일 패턴 매칭기가 있습니다.
Java:
private static boolean isValidEmail(String email) {
return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
코틀린 함수:
private fun isValidEmail(email: String): Boolean {
return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches()
}
코틀린 확장:
fun String.isValidEmail() =
!TextUtils.isEmpty(this) && Patterns.EMAIL_ADDRESS.matcher(this).matches()
reg-ex를 사용하지 마십시오.
다음은 RFC 2822를 준수하는 대부분의 전자 메일 주소를 정확하게 검증하는 reg-ex입니다("user@gmail.com.no spam"과 같은 경우에도 org.sys.messager.discreator.discreator.discovery에도 실패합니다).전자 메일 검증자)
(?:[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 계정 또는 기타 계정을 사용할 수 있습니다.
이메일 유효성 검사에 단순 한 줄 코드 사용
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();
}
다음과 같이 코틀린 확장자를 작성할 수 있습니다.
fun String.isValidEmail() =
isNotEmpty() && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
그런 다음 이렇게 부릅니다.
email.isValidEmail()
Android Studio에서 제안하는 내용은 다음과 같습니다.
public static boolean isEmailValid(String email) {
return !(email == null || TextUtils.isEmpty(email)) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
아래와 같이 Android:inputType="textEmailAddress"를 사용합니다.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="email"
android:inputType="textEmailAddress"
android:id="@+id/email"
/>
그리고:
boolean isEmailValid(CharSequence email) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email)
.matches();
}
정규식을 사용하여 이 작업을 수행할 수 있습니다.다음과 같은 것입니다.
Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");
String email = "xyz@xyzdomain.com";
Matcher matcher = pattern.matcher(email);
boolean matchFound = matcher.matches();
참고: 위의 정규 표현식을 확인하세요, 그대로 사용하지 마세요.
이 .Patterns
의 android.util
여기에 도움이 되는 것입니다.는 제가 것들을 할 때 입니다.
private boolean isEmailValid(String email) {
return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
이것은 코틀린에서 확장 기능을 사용하는 가장 좋은 방법입니다.
fun String.isEmailValid(): Boolean {
return !TextUtils.isEmpty(this) && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
}
확장 함수를 사용하는 가장 간단한 Kotlin 솔루션:
fun String.isEmailValid() =
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}" +
")+"
).matcher(this).matches()
그런 다음 다음 다음과 같이 검증할 수 있습니다.
"testemail6589@gmail.com".isEmailValid()
이 코틀린 멀티 플랫폼에 하지 않고 , 은 코틀린 멀티 에 있을 것입니다.Pattern
이는 다음과 같습니다.
fun String.isValidEmail() = Regex(emailRegexStr).matches(this)
전자 메일 ID의 유효성을 확인할 이 메서드를 호출합니다.
public static boolean isValid(String email)
{
String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches())
{
return true;
}
else{
return false;
}
}
이메일 검증을 위해 Android는 몇 가지 내장된 패턴을 제공합니다.하지만 API 레벨 8 이상만 지원합니다.
다음은 해당 패턴을 사용하여 전자 메일 유효성 검사를 위한 코드입니다.
private boolean Email_Validate(String email)
{
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
이 방법을 실행한 후 이 방법이 true를 반환하면 e-메일 저장을 허용하고 false를 반환하면 e-메일이 "Invalid"라는 메시지를 표시하는지 확인해야 합니다.
답변을 받으시길 바랍니다, 감사합니다.
이메일 주소를 '검증'하려고 하지 말고, 아무 이유 없이 많은 일을 하게 될 것을 강력히 추천합니다.
입력한 내용이 자신의 코드를 손상시키지 않도록 하십시오. 예를 들어 공백이나 잘못된 문자가 있으면 예외가 발생할 수 있습니다.
그 밖의 다른 것들은 최소한의 수익을 위해 당신에게 많은 일을 야기할 것입니다.
public boolean isValidEmail(String email)
{
boolean isValidEmail = false;
String emailExpression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(emailExpression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches())
{
isValidEmail = true;
}
return isValidEmail;
}
, 쉽게 할 수 있는 8을 할 수 .Patterns
클래스에서 전자 메일의 유효성을 검사합니다.샘플 코드:
public final static boolean isValidEmail(CharSequence target) {
if (target == null)
return false;
return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
만약 당신이 8 이하의 API 레벨을 지원하고 있다면, 당신은 간단히 복사할 수 있습니다.Patterns.java
프로젝트에 파일을 저장하고 참조합니다.다음에 대한 소스 코드를 얻을 수 있습니다.Patterns.java
이 링크에서
여기 있습니다android.util.Patterns.EMAIL_ADDRESS
[a-zA-Z0-9+]._\%-+]{1,256}\@[a-zA-Z0-9][a-zA-Z0-9-9]{0,64}(.[a-zA-Z0-9][a-zA-Z0-9]{0,25})+
String
다음과 같은 경우에 적합합니다.
Start by 1->256 character in (a-z, A-Z, 0-9, +, ., _, %, - , +)
then 1 '@' character
then 1 character in (a-z, A-Z, 0-9)
then 0->64 character in (a-z, A-Z, 0-9, -)
then **ONE OR MORE**
1 '.' character
then 1 character in (a-z, A-Z, 0-9)
then 0->25 character in (a-z, A-Z, 0-9, -)
일부 특수 일치 이메일의 예
a@b.c
a+@b-.c
a@b.c.d.e.f.g.h
귀하의 사례에 대해 이 패턴을 수정한 후 다음을 통해 확인할 수 있습니다.
fun isValidEmail(email: String): Boolean {
return Patterns.EMAIL_ADDRESS.matcher(email).matches()
}
Kotlin에서 이메일 확인:
val email = etEmail.text.toString().trim() // get email from user
if(isValidEmail(email)){ // call isValidEmail function and pass email in parameter
// Your email ID is Valid
}else{
// Enter your valid email ID
}
이 방법은 유효한 전자 메일 ID 형식을 확인하는 데 사용됩니다.
fun isValidEmail(email: CharSequence): Boolean {
var isValid = true
val expression = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"
val pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE)
val matcher = pattern.matcher(email)
if (!matcher.matches()) {
isValid = false
}
return isValid
}
숫자로 시작하는 전자 메일 주소를 수락할 수 없는 이 간단한 방법을 사용해 보십시오.
boolean checkEmailCorrect(String Email) {
if(signupEmail.length() == 0) {
return false;
}
String pttn = "^\\D.+@.+\\.[a-z]+";
Pattern p = Pattern.compile(pttn);
Matcher m = p.matcher(Email);
if(m.matches()) {
return true;
}
return false;
}
이 코드를 사용해 보십시오.그것은 정말 효과가 있습니다.
if (!email
.matches("^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]+[\\w]$"))
{
Toast.makeText(getApplicationContext(), "Email is invalid",
Toast.LENGTH_LONG).show();
return;
}
제가 사용한 것은 다음과 같습니다.하지만 그것은 일반적인 이메일보다 더 많은 문자를 포함하고 있지만, 이것은 나에게 필요한 것이었습니다.
public boolean isValidEmail(String inputString) {
String s ="^((?!.*?\.\.)[A-Za-z0-9\.\!\#\$\%\&\'*\+\-\/\=\?\^_`\{\|\}\~]+@[A-Za-z0-9]+[A-Za-z0-9\-\.]+\.[A-Za-z0-9\-\.]+[A-Za-z0-9]+)$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(inputString);
return matcher.matches();
}
이 질문에 대한 답변: - 지정된 포인트로 전자 메일 주소의 유효성을 확인하기 위한 요구 사항
설명-
- (!.*?..) "네거티브 룩헤드"를 눌러 연속적인 두 개의 점을 음으로 표시합니다.
- [A-Za-z0-9]!#\$\%\&\'*+-/\=\?\^_'{\|}\~]+ 하나 이상의 문자가 정의되었습니다. ("\"는 이스케이프에 사용됩니다.
- "@"가 하나 있을 수 있습니다.
- [A-Za-z0-9]+ 그 다음 하나 이상의 문자가 정의됩니다.
- [A-Za-z0-9-]* 0 또는 정의된 문자의 반복.
- [A-Za-z0-9]+ 점 다음에 하나 이상의 문자가 있습니다.
여기서 중요한 것은 전자 메일 주소의 유효성을 완전히 검사하려는 것입니다.단순히 구문이 정확한지 확인하는 것이 아니라 이메일 주소가 진짜인지 확인하는 것입니다.
두 가지 분명한 이유: 실제 사용자가 이메일 주소를 잘못 입력하는 경우가 많으며 일부 사용자는 가짜 이메일 주소를 입력할 수 있습니다.따라서 구문 검사와 존재 검사를 수행하려고 합니다.
Android에서 찾은 가장 좋은 방법은 무료 Cloudmersive Validation API를 사용하는 것입니다.
코드는 다음과 같습니다.
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
EmailApi apiInstance = new EmailApi();
String email = "email_example"; // String | Email address to validate, e.g. \"support@cloudmersive.com\". The input is a string so be sure to enclose it in double-quotes.
try {
FullEmailValidationResponse result = apiInstance.emailFullValidation(email);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling EmailApi#emailFullValidation");
e.printStackTrace();
}
저는 이것을 제 모든 앱에서 사용하고 있고, 입력 시점에서 UX의 이메일 주소를 확인할 수 있어서 좋습니다.
패턴에 따라.EMAIL_ADDRESS, 이 이메일은 "abc@abc.c"입니다.그래서 패턴에서 정규식을 수정했습니다.EMAIL_ADDRESS가 도메인의 최소 길이를 늘렸습니다.코틀린의 기능은 다음과 같습니다.
fun isEmailValid(email: String): Boolean =
email.isNotEmpty() && 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\\-]{1,25}" +
")+"
).matcher(email).matches()
방금 도메인 부분을 {0,25}에서 {1,25}(으)로 변경했습니다.
대부분의 정규식은 IDN(국제 도메인 이름) 및 .mobi 또는 .info와 같은 새로운 최상위 도메인에는 유효하지 않습니다(국가 코드 또는 .org, .com, .gov 등을 확인하는 경우).
유효한 검사를 통해 로컬 부품(at-sign 앞)과 도메인 부품을 구분해야 합니다.또한 로컬 부품 및 도메인의 최대 길이(at 기호를 포함한 총 255자)도 고려해야 합니다.
가장 좋은 방법은 주소를 IDN 호환 형식(필요한 경우)으로 변환하고, 로컬 부분(RFC)을 검증하고, 주소 길이와 도메인 가용성을 확인하거나(DNS MX 조회), 또는 단순히 전자 메일을 보내는 것입니다.
Linkify 클래스에는 전화 번호 및 전자 메일 주소를 선택하도록 설계된 정규식을 비롯하여 관련이 있을 수 있는 몇 가지 유용한 도우미 방법이 있습니다.
http://developer.android.com/reference/android/text/util/Linkify.html
저는 다음 코드를 사용했습니다.이것은 잘 작동합니다.이것이 당신에게 도움이 되기를 바랍니다.
if (validMail(yourEmailString)){
//do your stuf
}else{
//email is not valid.
}
다음 방법을 사용합니다.전자 메일이 유효하면 true가 반환됩니다.
private boolean validMail(String yourEmailString) {
Pattern emailPattern = Pattern.compile(".+@.+\\.[a-z]+");
Matcher emailMatcher = emailPattern.matcher(emailstring);
return emailMatcher.matches();
}
이메일은 당신의 이메일입니다.
public boolean validateEmail(String email) {
Pattern pattern;
Matcher matcher;
String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(email);
return matcher.matches();
}
정규식을 좋아하는 사람들을 위해, 지금부터 제가 찾은 가장 좋은 이메일 패턴(예: RFC 822와 일치)은 다음과 같습니다(PHP가 필터를 제공하기 전).API < 8을 가지고 노는 사람들을 위해 이것을 자바로 번역하는 것은 쉬울 것 같습니다.
private static function email_regex_pattern() {
// Source: http://www.iamcal.com/publish/articles/php/parsing_email
$qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
$dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
$atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c'.
'\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
$quoted_pair = '\\x5c[\\x00-\\x7f]';
$domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d";
$quoted_string = "\\x22($qtext|$quoted_pair)*\\x22";
$domain_ref = $atom;
$sub_domain = "($domain_ref|$domain_literal)";
$word = "($atom|$quoted_string)";
$domain = "$sub_domain(\\x2e$sub_domain)*";
$local_part = "$word(\\x2e$word)*";
$pattern = "!^$local_part\\x40$domain$!";
return $pattern ;
}
언급URL : https://stackoverflow.com/questions/1819142/how-should-i-validate-an-e-mail-address
'programing' 카테고리의 다른 글
십진수를 분수로 변환하는 방법은 무엇입니까? (0) | 2023.08.09 |
---|---|
구글은 폴리곤으로 v3 API 마우스를 매핑합니까? (0) | 2023.08.09 |
Javascript를 사용한 함수 호출로 포스트 폼 제출 시뮬레이션 (0) | 2023.08.04 |
JQuery 타이머를 사용하여 js-function 호출 (0) | 2023.08.04 |
jQuery를 사용하여 확인란 변경을 처리하는 방법은 무엇입니까? (0) | 2023.08.04 |