在EditText上的Android中的电子邮件地址验证

Rah*_*dia 176 android email-validation android-edittext

我们怎样才能执行Email Validationedittextandroid?我已经浏览了谷歌和SO,但我没有找到一种简单的方法来验证它.

use*_*884 619

public static boolean isValidEmail(CharSequence target) {
    return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
}
Run Code Online (Sandbox Code Playgroud)

编辑::它将在Android 2.2及更高版本上运行!! 编辑:添加缺失;

  • +1使用内置功能.我也会用`TextUtils.isEmpty(target)`替换`target == null`. (64认同)
  • 一行解决方案`return!TextUtils.isEmpty(target)&& Patterns.EMAIL_ADDRESS.matcher(target).matches();` (19认同)
  • 或单个衬里`boolean result =!TextUtils.isEmpty(target)&& android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();`:) (4认同)
  • 不幸的是,这种内置模式是不完整的。例如,“ a @ a”。会过去。检查此问题是否“对大多数人来说足够好”和符合RFC822的答案。 (2认同)
  • @MPelletier好,我亲自测试了它,并测试了“ a @ a”。不会通过 (2认同)

Rah*_*dia 67

要执行电子邮件验证,我们有很多方法,但简单和最简单的方法是两种方法.

1-使用EditText(....).addTextChangedListener它继续触发EditText boxie email_id 中的每个输入无效或有效

/**
 * Email Validation ex:- tech@end.com
*/


final EditText emailValidate = (EditText)findViewById(R.id.textMessage); 

final TextView textView = (TextView)findViewById(R.id.text); 

String email = emailValidate.getText().toString().trim();

String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";

emailValidate .addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) { 

    if (email.matches(emailPattern) && s.length() > 0)
        { 
            Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
            // or
            textView.setText("valid email");
        }
        else
        {
             Toast.makeText(getApplicationContext(),"Invalid email address",Toast.LENGTH_SHORT).show();
            //or
            textView.setText("invalid email");
        }
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // other stuffs 
    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    // other stuffs 
    } 
}); 
Run Code Online (Sandbox Code Playgroud)

2- 使用if-else条件的最简单方法.使用getText()获取EditText框字符串,并与为电子邮件提供的模式进行比较.如果模式不匹配或发生疼痛,则onClick按钮会覆盖一条消息.它不会在EditText框中的每个字符输入上触发.简单示例如下所示.

final EditText emailValidate = (EditText)findViewById(R.id.textMessage); 

final TextView textView = (TextView)findViewById(R.id.text); 

String email = emailValidate.getText().toString().trim();

String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";

// onClick of button perform this simplest code.
if (email.matches(emailPattern))
{
Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
}
else 
{
Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是有效的电子邮件模式。test_04@yahoo.co.in 失败。 (2认同)

Hir*_*tel 35

我是这样做的:

添加这种方法检查是否 电子邮件地址有效:

private boolean isValidEmailId(String email){

    return Pattern.compile("^(([\\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})$").matcher(email).matches();
     }
Run Code Online (Sandbox Code Playgroud)

现在,随着检查字符串EditText上:

if(isValidEmailId(edtEmailId.getText().toString().trim())){
  Toast.makeText(getApplicationContext(), "Valid Email Address.", Toast.LENGTH_SHORT).show();
}else{       
  Toast.makeText(getApplicationContext(), "InValid Email Address.", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

完成


Akh*_*ani 32

使用此方法验证您的电子邮件格式.将电子邮件作为字符串传递,如果格式正确则返回true,否则返回false.

/**
 * validate your email address format. Ex-akhi@mani.com
 */
public boolean emailValidator(String email) 
{
    Pattern pattern;
    Matcher matcher;
    final 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();
}
Run Code Online (Sandbox Code Playgroud)


Jay*_*kar 9

试试这个:

if (!emailRegistration.matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+")) {
   editTextEmail.setError("Invalid Email Address");
}
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于域名中包含多个点的电子邮件,如a@woof.co.za.它也匹配没有像@ gmailcom这样的点的东西 (2认同)

Gau*_*ora 7

使用此方法验证电子邮件: -

 public static boolean isEditTextContainEmail(EditText argEditText) {

            try {
                Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
                Matcher matcher = pattern.matcher(argEditText.getText());
                return matcher.matches();
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果您有任何疑问,请告诉我?


Nag*_*ddy 6

public static boolean isEmailValid(String email) {
    boolean isValid = false;

    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()) {
        isValid = true;
    }
    return isValid;
}
Run Code Online (Sandbox Code Playgroud)


Nav*_*mar 5

尝试这个

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}" +
              ")+"
          );
Run Code Online (Sandbox Code Playgroud)

并在 tne 编辑文本中

final String emailText = email.getText().toString();
EMAIL_ADDRESS_PATTERN.matcher(emailText).matches()
Run Code Online (Sandbox Code Playgroud)


App*_*eet 5

这是我为验证电子邮件地址而创建的示例方法,如果传递的字符串参数是有效的电子邮件地址,则返回true,否则返回false.

private boolean validateEmailAddress(String emailAddress){
    String  expression="^[\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";  
       CharSequence inputStr = emailAddress;  
       Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
       Matcher matcher = pattern.matcher(inputStr);  
       return matcher.matches();
}
Run Code Online (Sandbox Code Playgroud)