Android电子邮件验证:"。"之后的字符条件

时间:2017-04-11 06:46:05

标签: java android validation email

我希望为电子邮件设置验证条件,然后在" .xxx" (电子邮件终止,例如:john123@gmail.xxx)char限制小于3但仅超过2(例如:如果john123@gmail.c或@ gmail.commm则无效)。

这是我的尝试:

public final boolean validEmail(String target){

        boolean valid_dot_com

        if(target.toString().contains(".")){

           int indexDot = target.toString().indexOf(".");

           //  substring from char containing "." to last char
           String temp = target.toString().substring(indexDot,         
           target.length());

           if(temp.length()<2 && temp.length()>3){
              valid_dot_com = false;
            }
        }    

   return valid_dot_com && Patterns.EMAIL_ADDRESS.matcher(target).matches();   
}

但是,此代码不会返回我需要的结果。

我确实有一个理论,即Patterns.EMAIL_ADDRESS会覆盖我的布尔值,导致条件检查变为真,即使它不是。

请赐教!

编辑:

我找到了答案!

通过在线正则表达式生成器:https://regex101.com/ 我已经能够生成自定义正则表达式模式来编译并进行验证。其余代码类似于简单的条件。

谢谢大家的回复!

10 个答案:

答案 0 :(得分:1)

您可以使用内置功能。

if (!Patterns.EMAIL_ADDRESS.matcher(et_email.getText().toString()).matches()) 

{               你的代码。 }

答案 1 :(得分:1)

使用此:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

请参阅link

答案 2 :(得分:1)

尝试此自定义模式

String EMAIL_PATTERN = "^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$";

public final boolean validateEmail(String target) {
    if (target !=null && target.length() > 1) {
        Pattern pattern = Pattern.compile(EMAIL_PATTERN);
        Matcher matcher = pattern.matcher(target);
        return matcher.matches();
    } else if (target.length() == 0) {
        return false;
    } else {
        return false;
    }
}

答案 3 :(得分:1)

试试这个验证方法

  public static final Pattern VALID_EMAIL_ADDRESS_REGEX =
        Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

public static boolean validate(String emailStr) {
    Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr);
    return matcher.find();
}

答案 4 :(得分:1)

使用此

changePage(this.id);

答案 5 :(得分:1)

传递你的电子邮件字符串以验证下面的这个函数,它将返回布尔值,无论它是否有效

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

答案 6 :(得分:0)

以下内容将验证电子邮件。

public static boolean validateEmail(String email) {

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

    }

答案 7 :(得分:0)

这将使用点作为分隔符拆分电子邮件字符串,并获取第二个字符串值(在索引1处从0开始)并比较它以检查它是否为3或更小且在点之后大于1。

String st = email.split("\\.")[1];
if(st.length() <=3 && st.length() > 1) {
   // its 3 or less but greater than 1 after dot .
}

答案 8 :(得分:0)

试试这个

public final boolean validEmail(String target) {
        Log.d("RESULT", "----------------------------------Receieved: " + target);
        Log.d("RESULT", "----------------------------------String Length: " + target.length());
        Log.d("RESULT", "----------------------------------Index of Dot: " + target.toString().indexOf("."));

        boolean valid_dot_com = true;

        if (target.toString().contains(".")) {

            int indexDot = target.toString().indexOf(".");

            //  substring from char containing "." to last char
            String temp = target.toString().substring(indexDot + 1,
                    target.length());
            Log.d("RESULT", "----------------------------------Sub String : " + temp);
            Log.d("RESULT", "----------------------------------Sub String Lenght  : " + temp.length());
            if ((temp.length() > 3)) {
                valid_dot_com = false;
            }
        }

        return valid_dot_com && Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }

答案 9 :(得分:0)

已回答Here

TFD.STS.ERR = 0