Проверка электронной почты и номера телефона в android

У меня есть форма регистрации в моем приложении, которое я пытаюсь проверить. Я сталкиваюсь с некоторыми проблемами с моей проверкой, проверяя номера телефонов и поля электронной почты.

Вот мой код:

private boolean validate() {

    String MobilePattern = "[0-9]{10}";
    //String email1 = email.getText().toString().trim();
    String emailPattern = "[a-zA-Z0-9._-][email protected][a-z]+\\.+[a-z]+";

    if (name.length() > 25) {

        Toast.makeText(getApplicationContext(), "pls enter less the 25 character in user name", Toast.LENGTH_SHORT).show();
        return true;

    } else if (name.length() == 0 || number.length() == 0 || email.length() == 
             0 || subject.length() == 0 || message.length() == 0) {

        Toast.makeText(getApplicationContext(), "pls fill the empty fields", Toast.LENGTH_SHORT).show();
        return false;

    } else if (email.getText().toString().matches(emailPattern)) { 

        //Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
        return true;

    } else if(!email.getText().toString().matches(emailPattern)) { 

        Toast.makeText(getApplicationContext(),"Please Enter Valid Email Address",Toast.LENGTH_SHORT).show();
        return false;

    } else if(number.getText().toString().matches(MobilePattern)) {

        Toast.makeText(getApplicationContext(), "phone number is valid", Toast.LENGTH_SHORT).show();
        return true;

    } else if(!number.getText().toString().matches(MobilePattern)) {

        Toast.makeText(getApplicationContext(), "Please enter valid 10 digit phone number", Toast.LENGTH_SHORT).show();
        return false;
    }

    return false;
}

Я использовал этот код для проверки. Проблема, с которой я столкнулся, заключается в номере телефона и проверке подлинности электронной почты, работает только одна проверка. Например, если я прокомментирую проверку номера телефона, проверка подлинности электронной почты работает правильно. Если я прокомментирую проверку электронной почты, будет проверена проверка номера телефона. Если вы используете обе проверки, он не работает.

Ответ 1

Для проверки адреса электронной почты

private boolean isValidMail(String email) {

    String EMAIL_STRING = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
            + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

    return Pattern.compile(EMAIL_STRING).matcher(email).matches();

}

ИЛИ ЖЕ

private boolean isValidMail(String email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

Для мобильной проверки

Для действующего мобильного телефона Вам необходимо учитывать от 7 до 13 цифр, потому что в некоторых странах есть 7-значный номер мобильного телефона. Если вашей главной целью является ваша собственная страна, то вы можете сопоставить ее с длиной. Предполагая, что Индия имеет 10-значный номер мобильного телефона. Также мы не можем проверить, как мобильный номер должен начинаться с 9 или 8 или что-то еще.

Для мобильного номера я использовал эти две функции:

private boolean isValidMobile(String phone) {
    if(!Pattern.matches("[a-zA-Z]+", phone)) {
        return phone.length() > 6 && phone.length() <= 13;
    }
    return false;
}

ИЛИ ЖЕ

private boolean isValidMobile(String phone) {
    return android.util.Patterns.PHONE.matcher(phone).matches();    
}

Ответ 2

Используйте Pattern пакет в Android для соответствия проверки ввода для электронной почты и телефона

Похоже

android.util.Patterns.EMAIL_ADDRESS.matcher(input).matches();
android.util.Patterns.PHONE.matcher(input).matches();

Ответ 3

Android имеет встроенные шаблоны для электронной почты, номера телефона и т.д., которые можно использовать, если вы создаете для Android API уровня 8 и выше.

private boolean isValidEmail(CharSequence email) {
    if (!TextUtils.isEmpty(email)) {
        return Patterns.EMAIL_ADDRESS.matcher(email).matches();
    }
    return false;
}

private boolean isValidPhoneNumber(CharSequence phoneNumber) {
    if (!TextUtils.isEmpty(phoneNumber)) {
        return Patterns.PHONE.matcher(phoneNumber).matches();
    }
    return false;
}

Ответ 4

Попробуйте это

public class Validation {

    public final static boolean isValidEmail(CharSequence target) {
        if (target == null) {
        return false;
        } else {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
        }
    } 

    public static final boolean isValidPhoneNumber(CharSequence target) {
        if (target.length()!=10) {
            return false;
        } else {
            return android.util.Patterns.PHONE.matcher(target).matches();
        }
    }

}

Ответ 5

попробуйте следующее:

extMobileNo.addTextChangedListener(new MyTextWatcher(extMobileNo));

private boolean validateMobile()    {   

    String mobile =extMobileNo.getText().toString().trim();
    if(mobile.isEmpty()||!isValidMobile(mobile)||extMobileNo.getText().toString().toString().length()<10 || mobile.length()>13 )

    {
            inputLayoutMobile.setError(getString(R.string.err_msg_mobile));
        requestFocus(extMobileNo);
        return false;
    }

    else {
        inputLayoutMobile.setErrorEnabled(false);
    }

    return true;
}

private static boolean isValidMobile(String mobile)
{
    return !TextUtils.isEmpty(mobile)&& Patterns.PHONE.matcher(mobile).matches();
}

Ответ 6

Он хочет, чтобы изящное и правильное решение попробовало этот малый шаблон регулярного выражения.

Это специально для Индии. (Первая цифра не может быть нулевой, а затем может быть любой 9 цифр) return mobile.matches("[1-9][0-9]{9}");

Разбивка шаблона: -

[1-9] соответствует первой цифре и проверяет, находится ли число (целое число) между (включенным) от 1 до 9 [0-9]{9} совпадает с тем же, но {9} сообщает шаблону, что он должен проверять наличие всех 9 цифр.

Теперь часть {9} может отличаться для разных стран, поэтому у вас может быть массив, который сообщает количество цифр, разрешенных в телефонном номере. Некоторые страны также имеют значение для нуля перед номером, поэтому у вас может быть исключение для тех, кто разрабатывает отдельные шаблоны регулярных выражений для телефонных номеров этих стран.

Ответ 7

Я всегда использую этот метод для проверки электронной почты:

public boolean checkForEmail(Context c, EditText edit) {
    String str = edit.getText().toString();
    if (android.util.Patterns.EMAIL_ADDRESS.matcher(str).matches()) {
        return true;
    }
    Toast.makeText(c, "Email is not valid...", Toast.LENGTH_LONG).show();
    return false;
}

Ответ 8

public boolean checkForEmail() {
        Context c;
        EditText mEtEmail=(EditText)findViewById(R.id.etEmail);
        String mStrEmail = mEtEmail.getText().toString();
        if (android.util.Patterns.EMAIL_ADDRESS.matcher(mStrEmail).matches()) {
            return true;
        }
        Toast.makeText(this,"Email is not valid", Toast.LENGTH_LONG).show();
        return false;
    }


    public boolean checkForMobile() {
        Context c;
        EditText mEtMobile=(EditText)findViewById(R.id.etMobile);
        String mStrMobile = mEtMobile.getText().toString();
        if (android.util.Patterns.PHONE.matcher(mStrMobile).matches()) {
            return true;
        }
        Toast.makeText(this,"Phone No is not valid", Toast.LENGTH_LONG).show();
        return false;
    }

Ответ 9

Для проверки электронной почты и номера телефона вам нужно это сделать

public static boolean isValidMobile(String phone) {
    boolean check = false;
    if (!Pattern.matches("[a-zA-Z]+", phone)) {
        if (phone.length() < 9 || phone.length() > 13) {
            // if(phone.length() != 10) {
            check = false;
            // txtPhone.setError("Not Valid Number");
        } else {
            check = android.util.Patterns.PHONE.matcher(phone).matches();
        }
    } else {
        check = false;
    }
    return check;
}

public static boolean isEmailValid(String email) {
    boolean check;
    Pattern p;
    Matcher m;

    String EMAIL_STRING = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
            + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

    p = Pattern.compile(EMAIL_STRING);

    m = p.matcher(email);
    check = m.matches();

    return check;
}



String enter_mob_or_email="";//1234567890 or [email protected]
if (isValidMobile(enter_mob_or_email)) {// Phone number is valid

}else isEmailValid(enter_mob_or_email){//Email is valid

}else{// Not valid email or phone number

}

Ответ 10

XML

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/et_email_contact"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:maxLines="1"
    android:hint="Enter Email or Phone Number"/>

Джава

private AppCompatEditText et_email_contact;
private boolean validEmail = false, validPhone = false;     

et_email_contact = findViewById(R.id.et_email_contact);
et_email_contact.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        String regex = "^[+]?[0-9]{10,13}$";
        String emailContact = s.toString();
        if (TextUtils.isEmpty(emailContact)) {
            Log.e("Validation", "Enter Mobile No or Email");
        } else {
            if (emailContact.matches(regex)) {
                Log.e("Validation", "Valid Mobile No");
                validPhone = true;
                validEmail = false;
            } else if (Patterns.EMAIL_ADDRESS.matcher(emailContact).matches()) {
                Log.e("Validation", "Valid Email Address");
                validPhone = false;
                validEmail = true;
            } else {
                validPhone = false;
                validEmail = false;
                Log.e("Validation", "Invalid Mobile No or Email");
            }
        }
    }
});

if (validPhone || validEmail) {
    Toast.makeText(this, "Valid Email or Phone no", Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(this, "InValid Email or Phone no", Toast.LENGTH_SHORT).show();
}