Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中有效电子邮件地址(multiple time.com或.in)的正则表达式是什么_Android - Fatal编程技术网

Android中有效电子邮件地址(multiple time.com或.in)的正则表达式是什么

Android中有效电子邮件地址(multiple time.com或.in)的正则表达式是什么,android,Android,我知道这个问题已经被问过很多次了,但我的问题与其他问题不同。目前,我正在使用下面的正则表达式来验证电子邮件地址,但当我多次测试.com.com时,它会接受。我想要一个也测试multiple.com或multiple.in的正则表达式。可能吗?或者我应该像用表达式“.”拆分整个字符串并检查数组长度那样以编程方式处理这个问题。如果长度大于1,则表示多个。com/.in是否存在且不应验证?下面是我正在使用的正则表达式 String regExpn = "^(([\\w-]+\\.)+[\\w

我知道这个问题已经被问过很多次了,但我的问题与其他问题不同。目前,我正在使用下面的正则表达式来验证电子邮件地址,但当我多次测试.com.com时,它会接受。我想要一个也测试multiple.com或multiple.in的正则表达式。可能吗?或者我应该像用表达式“.”拆分整个字符串并检查数组长度那样以编程方式处理这个问题。如果长度大于1,则表示多个。com/.in是否存在且不应验证?下面是我正在使用的正则表达式

 String regExpn =
    "^(([\\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})$";
我使它成为多行的,以避免有太长的线。在注册用户时,我使用它进行电子邮件验证


我使它成为多行的,以避免有太长的线。我在注册用户时使用它进行电子邮件验证。

简单地说,我建议,

if(email.substring(email.lastIndexOf("@") + 1).chars().filter(ch -> ch == '.').count() >=2 ){
  //contains .in
}

简单地说,我建议,

if(email.substring(email.lastIndexOf("@") + 1).chars().filter(ch -> ch == '.').count() >=2 ){
  //contains .in
}

下面是我如何解决上述问题的

我首先使用String split()函数和表达式“@”,并在第一个索引上获取字符串,然后使用表达式“\”进一步拆分。如果长度大于2,则获取数组字符串的长度,这意味着.com/。包含多次的代码如下:

  public static boolean isEmailValid(String email) {

    CharSequence inputStr = email;
    Pattern pattern = Pattern.compile(regExpn,Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);

    if(matcher.matches()) {
        String [] splitedEmail = email.split("@");
        String toCheckMultipleDots = splitedEmail[1];
        String [] toChecksplittedDots = toCheckMultipleDots.split("\\.");

        if(toChecksplittedDots.length > 2){
            return false;
        } else {
            return true;
        }
    }

    else
        return false;
}

下面是我如何解决上述问题的

我首先使用String split()函数和表达式“@”,并在第一个索引上获取字符串,然后使用表达式“\”进一步拆分。如果长度大于2,则获取数组字符串的长度,这意味着.com/。包含多次的代码如下:

  public static boolean isEmailValid(String email) {

    CharSequence inputStr = email;
    Pattern pattern = Pattern.compile(regExpn,Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);

    if(matcher.matches()) {
        String [] splitedEmail = email.split("@");
        String toCheckMultipleDots = splitedEmail[1];
        String [] toChecksplittedDots = toCheckMultipleDots.split("\\.");

        if(toChecksplittedDots.length > 2){
            return false;
        } else {
            return true;
        }
    }

    else
        return false;
}

这个想法有点问题。你必须记住有些人的地址格式是:some。name@gmail.com这将导致有三个部分,而不是两个可能重复的轻微问题的想法。你必须记住有些人的地址格式是:some。name@gmail.com这将导致上述解决方案无法解决的问题有三部分而不是两部分,因为即使我使用java 8,android studio也没有识别chars()方法:(我已经在简单的java控制台中用正式字符串对此进行了测试,并且工作得很好。有很多方法可以检查某些特定字符的重复出现,因此这背后的逻辑是检查(点)在@symbol之后的字符串中出现,如果大于或等于2,则它包含.com.in else only.com。您了解我了吗?您可以使用一些核心循环方法或apache的stringutils类来检查字符串中某个字符的出现情况。是的,我了解了,并且已经实现了。我想知道还有其他的吗r方法通过regex或androidNo中的任何内置方法没有任何内置方法,regex是一种替代方法,但您必须多次检查regex,并检查当前电子邮件与哪个regex匹配。因此,我认为regex不是更好的方法。我给出的解决方案是更好的方法,但您告诉了
chars()
无法识别,因此在我看来,最好使用一些备用的自创方法来检查点的出现。上述解决方案无法解决此问题,因为即使我使用java 8,android studio也无法识别chars()方法:(我已经在简单的java控制台中用正式字符串对此进行了测试,并且工作得很好。有很多方法可以检查某些特定字符的重复出现,因此这背后的逻辑是检查(点)在@symbol之后的字符串中出现,如果大于或等于2,则它包含.com.in else only.com。您了解我了吗?您可以使用一些核心循环方法或apache的stringutils类来检查字符串中某个字符的出现情况。是的,我了解了,并且已经实现了。我想知道还有其他的吗r方法通过regex或androidNo中的任何内置方法没有任何内置方法,regex是一种替代方法,但您必须多次检查regex,并检查当前电子邮件与哪个regex匹配。因此,我认为regex不是更好的方法。我给出的解决方案是更好的方法,但您告诉了
chars()
无法识别,因此在我看来,最好使用一些备用的自创方法来检查点的出现情况。