简体   繁体   English

如何查看edittext的文本是否为email地址?

[英]How to check edittext's text is email address or not?

how to check the text of edittext is email address or not without using javascript and regular expression?如何在不使用javascript和正则表达式的情况下检查 edittext 的文本是否为edittext地址? Here I used inputtype="textEmailAddress" this is working but no error message is display.在这里我使用inputtype="textEmailAddress"这是有效的但没有显示错误消息。

On Android 2.2+ use this:在 Android 2.2+ 上使用:

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

for example:例如:

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.");
}
/**
 * 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();
}

Pass your edit text string in this function.在此 function 中传递您的编辑文本字符串。

for right email verification you need server side authentication对于正确的 email 验证,您需要服务器端身份验证


Note there is now a built-in method in Android, see answers below.请注意,现在 Android 中有一个内置方法,请参见下面的答案。

Please follow the following Steps请按照以下步骤

Step 1:步骤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>

Step 2:第2步:

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

Step 3:第 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)
    });

}

}

I wrote a library that extends EditText which supports natively some validation methods and is actually very flexible.我写了一个扩展 EditText 的库,它本身支持一些验证方法,实际上非常灵活。

Current, as I write, natively supported (through xml attributes ) validation methods are:当前,正如我所写,本机支持(通过xml 属性)验证方法是:

  1. regexp : for custom regexp正则表达式:用于自定义正则表达式
  2. numeric : for an only numeric field numeric :仅用于数字字段
  3. alpha : for an alpha only field alpha :仅用于 alpha 字段
  4. alphaNumeric : guess what? alphaNumeric : 你猜怎么着?
  5. email : checks that the field is a valid email email :检查该字段是否有效 email
  6. creditCard : checks that the field contains a valid credit card using Luhn Algorithm creditCard :使用 Luhn 算法检查该字段是否包含有效的信用卡
  7. phone : checks that the field contains a valid phone number phone :检查该字段是否包含有效的电话号码
  8. domainName : checks that field contains a valid domain name ( always passes the test in API Level < 8 ) domainName :检查该字段是否包含有效的域名(始终通过 API Level < 8 中的测试)
  9. ipAddress : checks that the field contains a valid ip address webUrl: checks that the field contains a valid url ( always passes the test in API Level < 8 ) ipAddress :检查该字段是否包含有效的 ip 地址 webUrl:检查该字段是否包含有效的 url (始终通过 API 级别的测试 <88)
  10. nocheck : It does not check anything. nocheck :它不检查任何东西。 (Default) (默认)

You can check it out here: https://github.com/vekexasia/android-form-edittext你可以在这里查看: https://github.com/vekexasia/android-form-edittext

Hope you enjoy it:)希望你喜欢它:)

In the page I linked you'll be able to find also an example for email validation.在我链接的页面中,您还可以找到 email 验证的示例。 I'll copy the relative snippet here:我将在此处复制相关片段:

<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"
       />  

There is also a test app showcasing the library possibilities.还有一个测试应用程序展示了库的可能性。

This is a screenshot of the app validating the email field.这是验证 email 字段的应用程序的屏幕截图。

通过 xml+library 完成电子邮件验证

As mentioned in one of the answers you can use the Patterns class as below:如答案之一所述,您可以使用Patterns class 如下:

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

By chance if you are even supporting API level less than 8, then you can simply copy the Patterns.java file into your project and reference it.如果您甚至支持低于 8 级的 API 级别,那么您可以简单地将Patterns.java文件复制到您的项目中并引用它。 You can get the source code for Patterns.java from this link您可以从此链接获取Patterns.java的源代码

In your case you can use the android.util.Patterns package .在您的情况下,您可以使用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();

The following code should be useful to you.以下代码应该对您有用。

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();
    }

For Email Address validation try this simple and easy code.对于 Email 地址验证,试试这个简单易行的代码。

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

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

here email is your email-id.这里 email 是您的电子邮件 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();

    }

Apache Commons Validator can be used as mentioned in the other answers. Apache Commons Validator可以像其他答案中提到的那样使用。

Step:1)Download the jar file from here步骤:1)从这里下载 jar 文件

Step:2)Add it into your project libs步骤:2)将其添加到您的项目库中

The import:进口:

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

The code:编码:

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

and to allow local addresses::并允许本地地址::

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

A simple method一个简单的方法

    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;
}
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;
}
   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();
                }


        });

For Kotlin :对于 Kotlin

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

You can check it by regular expression您可以通过正则表达式检查它

    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;
        }
     }
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 更多验证请点击这里

With android.util.Patterns and Kotlin it's very simple.使用 android.util.Patterns 和 Kotlin 非常简单。 One line function which return Boolean value.一行 function 返回 Boolean 值。

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

for email validation try this.对于 email 验证试试这个。

public boolean checkemail(String email)
{

    Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");
    Matcher matcher = pattern.matcher(email);
    return matcher.matches();

}

In Kotlin, an E-mail address you can validate by the simple method without writing a lot of code and bother yourself with a regular expression like "^[_A-Za-z0-9-\+]....".在 Kotlin 中,您可以通过简单的方法验证电子邮件地址,而无需编写大量代码,也无需使用诸如“^[_A-Za-z0-9-\+]....”之类的正则表达式来困扰自己。

Look how is simple:看看如何简单:

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

After you write this method for e-mail validation you just need to input your e-mail which you want to validate.编写此方法进行电子邮件验证后,您只需输入要验证的电子邮件即可。 If validateEmail() method returns true e-mail is valid and if false then e-mail is not valid.如果 validateEmail() 方法返回 true,则电子邮件有效,如果为 false,则电子邮件无效。

Here is example how you can use this method:以下是如何使用此方法的示例:

 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
        }

Try this:尝试这个:

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

Thanks!谢谢!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM