Cách kiểm tra văn bản của edittext có phải là địa chỉ email hay không?


114

Làm thế nào để kiểm tra văn bản của edittextcó phải là địa chỉ email hay không mà không sử dụng javascriptvà biểu thức chính quy? Ở đây tôi đã sử dụng, inputtype="textEmailAddress"điều này đang hoạt động nhưng không có thông báo lỗi nào được hiển thị.


2
Chắc chắn câu trả lời của PointerNull dưới đây là câu trả lời hợp lý, hiện đại đây ??
Fattie

1
@JoeBlow yes i đồng ý, nhưng có một số lượng hạn chế của thời điểm đó "hỏi" có thể thay đổi câu trả lời đồng ý ....
angryITguy

Câu trả lời:


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

Chuyển chuỗi văn bản chỉnh sửa của bạn vào hàm này.

để xác minh đúng email, bạn cần xác thực phía máy chủ


Lưu ý rằng hiện có một phương pháp được tích hợp sẵn trong Android, hãy xem câu trả lời bên dưới.


7
Stringdụng cụ CharSequencenên tôi nghĩ dàn diễn viên từ này emailsang inputStrlà thừa.
nuala

Với việc giới thiệu các tên miền cấp cao nhất mới dài hơn 2-4 ký tự, điều này cần được cập nhật. Chỉ cần thay thế {2,4} "bằng" + ". (Ví dụ: joe@century21.realtor)
Dave Owens

Không sử dụng cụm từ thông dụng khi xác thực địa chỉ e-mail (xem stackoverflow.com/a/201378/2003763 )
Thibault D.

409

Trên Android 2.2+ sử dụng cái này:

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

ví dụ:

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

13

Vui lòng làm theo các bước sau

Bước 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>

Bước 2:

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

Bước 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)
    });

}

}

12

Tôi đã viết một thư viện mở rộng EditText hỗ trợ một số phương pháp xác thực và thực sự rất linh hoạt.

Hiện tại, như tôi viết, các phương pháp xác thực được hỗ trợ nguyên bản (thông qua các thuộc tính xml ) là:

  1. regexp : dành cho regexp tùy chỉnh
  2. số : cho một trường số duy nhất
  3. alpha : cho một trường chỉ alpha
  4. alphaNumeric : đoán xem?
  5. email : kiểm tra xem trường có phải là email hợp lệ không
  6. creditCard : kiểm tra trường có chứa thẻ tín dụng hợp lệ hay không bằng cách sử dụng Thuật toán Luhn
  7. phone : kiểm tra xem trường có chứa số điện thoại hợp lệ không
  8. domainName : kiểm tra trường đó có chứa tên miền hợp lệ không (luôn vượt qua bài kiểm tra ở Cấp API <8)
  9. ipAddress : kiểm tra xem trường có chứa địa chỉ ip hợp lệ không webUrl: kiểm tra xem trường có chứa url hợp lệ hay không (luôn vượt qua bài kiểm tra ở Cấp độ API <8)
  10. nocheck : Nó không kiểm tra bất cứ điều gì. (Mặc định)

Bạn có thể kiểm tra nó tại đây: https://github.com/vekexasia/android-form-edittext

Hy vọng la bạn se thich no :)

Trong trang mà tôi đã liên kết, bạn cũng có thể tìm thấy một ví dụ để xác thực email. Tôi sẽ sao chép đoạn mã tương đối ở đây:

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

Ngoài ra còn có một ứng dụng thử nghiệm giới thiệu các khả năng của thư viện.

Đây là ảnh chụp màn hình của ứng dụng xác thực trường email.

xác thực email được thực hiện qua thư viện xml +


7

Như đã đề cập trong một trong các câu trả lời, bạn có thể sử dụng Patternslớp như bên dưới:

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

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

Tình cờ nếu bạn thậm chí đang hỗ trợ cấp API nhỏ hơn 8, thì bạn có thể chỉ cần sao chép Patterns.javatệp vào dự án của mình và tham chiếu nó. Bạn có thể lấy mã nguồn Patterns.javatừ liên kết này


4

Trong trường hợp của bạn, bạn có thể sử dụng 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();

3

Đoạn mã sau sẽ hữu ích cho bạn.

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

2

đây là email-id email của bạn.

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

    }

Tác giả của email hiện tại RFC, John Klensin, có một địa chỉ email mà bạn từ chối. Nó chứa một dấu +.
arnt

2

Apache Commons Validator có thể được sử dụng như đã đề cập trong các câu trả lời khác.

Bước: 1) Tải xuống tệp jar từ đây

Bước: 2) Thêm nó vào libs dự án của bạn

Nhập khẩu:

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

Mật mã:

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

và cho phép địa chỉ địa phương ::

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

2

Để xác thực Địa chỉ Email, hãy thử mã đơn giản và dễ dàng này.

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

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

1

Một phương pháp đơn giản

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

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


        });

1
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;
}

0

để xác thực email, hãy thử điều này.

public boolean checkemail(String email)
{

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

}

sir xin vui lòng kiểm tra xác nhận của bạn cho gfdfg@+*&.com như email
R Fauzdar

0

Bạn có thể kiểm tra nó bằng biểu thức chính quy

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

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

Để xác nhận thêm, bấm vào đây


0

Với android.util.Patterns và Kotlin, nó rất đơn giản. Hàm một dòng trả về giá trị Boolean.

fun validateEmail(email: String) = Patterns.EMAIL_ADDRESS.matcher(email)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.