我希望为电子邮件设置验证条件,然后在" .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/ 我已经能够生成自定义正则表达式模式来编译并进行验证。其余代码类似于简单的条件。
谢谢大家的回复!
答案 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