【问题标题】:How to check edittext's text is email address or not?如何检查edittext的文本是否为电子邮件地址?
【发布时间】:2011-09-01 11:03:10
【问题描述】:

如何在不使用javascript和正则表达式的情况下检查edittext的文本是否是电子邮件地址? 这里我使用了inputtype="textEmailAddress",这可以工作,但没有显示错误消息。

【问题讨论】:

  • PointerNull 下面的答案肯定是这里的合理、现代的答案??
  • @JoeBlow 是的,我同意,但是“提问者”可以在有限的时间内更改商定的答案....

标签: android android-edittext email-validation


【解决方案1】:

在 Android 2.2+ 上使用这个:

boolean isEmailValid(CharSequence email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

例如:

EditText emailid = (EditText) loginView.findViewById(R.id.login_email);
String getEmailId = emailid.getText().toString();

// Check if email id is valid or not
if (!isEmailValid(getEmailId)){
    new CustomToast().Show_Toast(getActivity(), loginView,
        "Your Email Id is Invalid.");
}

【讨论】:

  • 哇。谢谢先生
【解决方案2】:
/**
 * method is used for checking valid email id format.
 * 
 * @param email
 * @return boolean true for valid false for invalid
 */
public static boolean isEmailValid(String email) {
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

在此函数中传递您的编辑文本字符串。

对于正确的电子邮件验证,您需要服务器端身份验证


注意现在 Android 中有一个内置方法,请参阅下面的答案。

【讨论】:

  • String 实现了CharSequence 所以我认为从emailinputStr 的转换是多余的。
  • 随着长度超过 2-4 个字符的新顶级域的引入,这需要更新。只需将 {2.4}" 替换为“+”即可。(例如 joe@century21.realtor)
  • 验证电子邮件地址时不要使用正则表达式(请参阅stackoverflow.com/a/201378/2003763
【解决方案3】:

请按照以下步骤操作

第 1 步:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_below="@+id/textView_email"
        android:layout_marginTop="40dp"
        android:hint="Email Adderess"
        android:inputType="textEmailAddress" />

    <TextView
        android:id="@+id/textView_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="Email Validation Example" />

</RelativeLayout>

第 2 步:

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

第 3 步:

public class MainActivity extends Activity {

private EditText email;

private String valid_email;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initilizeUI();
}

/**
 * This method is used to initialize UI Components
 */
private void initilizeUI() {
    // TODO Auto-generated method stub

    email = (EditText) findViewById(R.id.editText_email);

    email.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

            // TODO Auto-generated method stub
            Is_Valid_Email(email); // pass your EditText Obj here.
        }

        public void Is_Valid_Email(EditText edt) {
            if (edt.getText().toString() == null) {
                edt.setError("Invalid Email Address");
                valid_email = null;
            } else if (isEmailValid(edt.getText().toString()) == false) {
                edt.setError("Invalid Email Address");
                valid_email = null;
            } else {
                valid_email = edt.getText().toString();
            }
        }

        boolean isEmailValid(CharSequence email) {
            return android.util.Patterns.EMAIL_ADDRESS.matcher(email)
                    .matches();
        } // end of TextWatcher (email)
    });

}

}

【讨论】:

    【解决方案4】:

    我写了一个扩展 EditText 的库,它本身支持一些验证方法,实际上非常灵活。

    目前,就我而言,本机支持(通过 xml 属性)验证方法是:

    1. 正则表达式:用于自定义正则表达式
    2. 数字:仅用于数字字段
    3. alpha:仅用于 alpha 字段
    4. alphaNumeric:你猜怎么着?
    5. 电子邮件:检查该字段是否为有效的电子邮件
    6. creditCard:使用 Luhn 算法检查该字段是否包含有效的信用卡
    7. 电话:检查该字段是否包含有效的电话号码
    8. domainName:检查该字段是否包含有效的域名(始终通过 API 级别
    9. ipAddress:检查该字段是否包含有效的 IP 地址 webUrl:检查该字段是否包含有效的 url(始终通过 API 级别
    10. nocheck:它不检查任何内容。 (默认)

    你可以在这里查看:https://github.com/vekexasia/android-form-edittext

    希望你喜欢它:)

    在我链接的页面中,您还可以找到电子邮件验证的示例。我将在此处复制相关的 sn-p:

    <com.andreabaccega.widget.FormEditText
           style="@android:style/Widget.EditText"
           whatever:test="email"
           android:id="@+id/et_email"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/hint_email"
           android:inputType="textEmailAddress"
           />  
    

    还有一个展示库可能性的测试应用程序。

    这是验证电子邮件字段的应用的屏幕截图。

    【讨论】:

      【解决方案5】:

      如答案之一所述,您可以使用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 文件复制到您的项目中并引用它。您可以从this link获取Patterns.java的源代码

      【讨论】:

        【解决方案6】:

        在您的情况下,您可以使用android.util.Patterns package

        EditText email = (EditText)findViewById(R.id.user_email);
        
        if(Patterns.EMAIL_ADDRESS.matcher(email.getText().toString()).matches())
            Toast.makeText(this, "Email is VALID.", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "Email is INVALID.", Toast.LENGTH_SHORT).show();
        

        【讨论】:

          【解决方案7】:

          下面的代码应该对你有用。

          String email;
          check.setOnClickListener(new OnClickListener() {
          
          
                          public void onClick(View arg0) {
          
                              checkEmail(email);
                              if (checkMail) {
                                  System.out.println("Valid mail Id");
                              }
                          }
                      });
          
                  }
              }
          
              public static boolean checkEmail(String email) {
          
                  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}" + ")+");
                  return EMAIL_ADDRESS_PATTERN.matcher(email).matches();
              }
          

          【讨论】:

            【解决方案8】:

            对于电子邮件地址验证,试试这个简单易行的代码。

                String email = inputEmail.getText().toString().trim();
            
                if (!Patterns.EMAIL_ADDRESS.matcher(email).matches())
                {
                    inputEmail.setError("Enter Valid Email Address");
                    inputEmail.requestFocus();
                }
            

            【讨论】:

              【解决方案9】:

              这里的电子邮件是您的电子邮件 ID。

                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 的作者 John Klensin 有一个您拒绝的电子邮件地址。它包含一个 + 号。
              【解决方案10】:

              Apache Commons Validator 可以像其他答案中提到的那样使用。

              步骤:1)从here下载jar文件

              步骤:2)将其添加到您的项目库中

              导入:

              import org.apache.commons.validator.routines.EmailValidator;
              

              代码:

              String email = "myName@example.com";
              boolean valid = EmailValidator.getInstance().isValid(email);
              

              并允许本地地址::

              boolean allowLocal = true;
              boolean valid = EmailValidator.getInstance(allowLocal).isValid(email);
              

              【讨论】:

                【解决方案11】:

                试试这个:

                public boolean isValidEmail(String email) {
                    return (PatternsCompat.EMAIL_ADDRESS.matcher(email).matches());
                }
                

                谢谢!

                【讨论】:

                  【解决方案12】:

                  一个简单的方法

                      private boolean isValidEmail(String email)
                  {
                      String emailRegex ="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
                      if(email.matches(emailRegex))
                      {
                          return true;
                      }
                      return false;
                  }
                  

                  【讨论】:

                    【解决方案13】:
                       I Hope this code is beneficial for you
                    
                        public class Register extends Activity 
                          {
                           EditText FirstName, PhoneNo, EmailId,weight;
                           Button Register;
                           private static final Pattern EMAIL_PATTERN = Pattern
                            .compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
                    
                    
                       private static final Pattern USERFIRSTNAME_PATTERN = Pattern
                            .compile("[a-zA-Z0-9]{1,250}");
                       private static final Pattern PHONE_PATTERN = Pattern
                            .compile("[a-zA-Z0-9]{1,250}");
                           @Override
                       public void onCreate(Bundle savedInstanceState) {
                        // TODO Auto-generated method stub
                            super.onCreate(savedInstanceState);
                            setContentView(R.layout.register);
                    
                    
                            Register=(Button) findViewById(R.id.register);
                    
                            FirstName=(EditText)findViewById(R.id.person_firstname);
                    
                                PhoneNo =(EditText)findViewById(R.id.phone_no);
                                EmailId=(EditText)findViewById(R.id.email_id);
                                weight=(EditText) findViewById(R.id.weight);
                    
                             Register.setOnClickListener(new View.OnClickListener() {
                    
                                @Override
                                public void onClick(View v) {
                    
                                    sFirstName= FirstName.getText().toString();
                                     sPhoneNo= PhoneNo.getText().toString();
                                    sEmailId= EmailId.getText().toString();
                                    sweight= weight.getText().toString(); 
                    
                                    if(sFirstName.equals("")||sPhoneNo.equals("")||sEmailId.equals("")||sweight.equals(""))
                                    {
                                        if ((!CheckUsername(sFirstName))) 
                                         {
                                         Toast.makeText(Register.this, "FirstName can not be null",Toast.LENGTH_LONG).show();
                                         }
                                       else if ((!Checkphoneno(sPhoneNo)))
                                           {
                                        Toast.makeText(Register.this, "ENTER VALID mobile no ",Toast.LENGTH_LONG).show();
                                           }
                                        else if ((!CheckEmail(sEmailId)))
                                           {
                                          Toast.makeText(Register.this, "ENTER VALID EMAIL ID",Toast.LENGTH_LONG).show();
                                           }
                                        else if ((!Checkweight(sweight)))
                                          {
                                        Toast.makeText(Register.this, "ENTER Weight in kg",Toast.LENGTH_LONG).show();
                                          }
                                   }
                    
                                }
                                    private boolean CheckEmail(String sEmailId) {
                    
                                        return EMAIL_PATTERN.matcher(sEmailId).matches();
                                    }
                    
                    
                    
                                    private boolean CheckUsername(String sFirstName) {
                    
                                        return USERFIRSTNAME_PATTERN.matcher(sFirstName).matches();
                                    }
                                    private boolean Checkphoneno(String sPhoneNo) {
                    
                                        return PHONE_PATTERN.matcher(sPhoneNo).matches();
                                    }
                                    private boolean Checkweight(String sweight) {
                    
                                        return Weight_PATTERN.matcher(sweight).matches();
                                    }
                    
                    
                            });
                    

                    【讨论】:

                      【解决方案14】:
                      public static boolean isEmailValid(String email) {
                          boolean isValid = false;
                      
                          String expression = "^(([\\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})$";
                          // "^[\\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;
                      }
                      

                      【讨论】:

                        【解决方案15】:

                        对于电子邮件验证,试试这个。

                        public boolean checkemail(String email)
                        {
                        
                            Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");
                            Matcher matcher = pattern.matcher(email);
                            return matcher.matches();
                        
                        }
                        

                        【讨论】:

                        • 先生,请通过电子邮件测试您对 gfdfg@+*&.com 的验证
                        【解决方案16】:

                        可以通过正则表达式查看

                            public boolean isValid(String strEmail)
                            {
                                pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
                                    matcher = pattern.matcher(strEmail);
                        
                                if (strEmail.isEmpty()) {
                                   return false;
                                } else if (!matcher.matches()) {
                                    return false;
                                }
                                else
                                {
                                return true;
                                }
                             }
                        

                        【讨论】:

                          【解决方案17】:
                          private boolean isValidEmailID(String email) {
                              String PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
                              Pattern pattern = Pattern.compile(PATTERN);
                              Matcher matcher = pattern.matcher(email);
                              return matcher.matches();
                          }
                          

                          For more validation click here

                          【讨论】:

                            【解决方案18】:

                            使用 android.util.Patterns 和 Kotlin 非常简单。一个返回布尔值的行函数。

                            fun validateEmail(email: String) = Patterns.EMAIL_ADDRESS.matcher(email)
                            

                            【讨论】:

                              【解决方案19】:

                              在 Kotlin 中,您可以通过简单的方法验证电子邮件地址,而无需编写大量代码,也无需使用诸如 "^[_A-Za-z0-9-\+]... 之类的正则表达式来困扰自己。 ”。

                              看看有多简单:

                               fun validateEmail(emailForValidation: String): Boolean{
                                  
                                          return Patterns.EMAIL_ADDRESS.matcher(emailForValidation).matches()
                                      }
                              

                              在你编写了这个方法进行电子邮件验证后,你只需要输入你想要验证的电子邮件。 如果 validateEmail() 方法返回 true,则电子邮件有效,如果为 false,则电子邮件无效。

                              以下是如何使用此方法的示例:

                               val eMail: String = emailEditText.text.toString().trim()
                               if (!validateEmail(eMail)){ //IF NOT TRUE
                                          Toast.makeText(context, "Please enter valid E-mail address", Toast.LENGTH_LONG).show()
                              
                                          return //RETURNS BACK TO IF STATEMENT
                                      }
                              

                              【讨论】:

                                【解决方案20】:

                                对于 Kotlin

                                fun emailValidation(email: String?): Boolean {
                                    return Patterns.EMAIL_ADDRESS.matcher(email).matches()
                                }
                                

                                【讨论】:

                                  猜你喜欢
                                  • 2016-08-20
                                  • 2012-09-09
                                  • 2015-09-03
                                  • 2016-04-06
                                  • 2013-07-15
                                  • 2016-02-21
                                  • 2015-07-02
                                  • 2011-08-30
                                  • 2011-06-08
                                  相关资源
                                  最近更新 更多