Java 如何计算与模式匹配的数字或字符数?

Java 如何计算与模式匹配的数字或字符数?,java,regex,Java,Regex,下面是我的函数,它检查字符串是否为字母/数字 public boolean bpIsAlphaNumeric(String s){ String pattern= "^[a-zA-Z0-9]*$"; if(s.matches(pattern)){ return true; } return false; } 它工作得很好。现在我需要(使用相同的方法/模式)检查字符串s是否至少包含xxx个字母/数字字符 //e.g. at least 4 cha

下面是我的函数,它检查字符串是否为字母/数字

public boolean bpIsAlphaNumeric(String s){
    String pattern= "^[a-zA-Z0-9]*$";
    if(s.matches(pattern)){
        return true;
    }
    return false; 
}
它工作得很好。现在我需要(使用相同的方法/模式)检查字符串s是否至少包含xxx个字母/数字字符

//e.g. at least 4 characters should be alphanumeric

String "abc#DE$01%23!##^$"  //true, because it contains - abcDE0123
String "!$#%#a#b&9$^$##^$"  //false, because it contains only - ab9

这主要来自@f1sh的回答:

String regex = "([^a-zA-Z0-9]*[a-zA-Z0-9]){4,}"

它接受((非alpha)*(alpha)至少4次)。

我不确定上述模式是否有效。如果没有,您也可以尝试以下方法:

public static boolean hasAtleast4AlphaNumeric(String s){
    String pattern= "([a-zA-Z0-9].*){4,}.*$";
    if(s.matches(pattern)){
        return true;
    }
    return false; 
}

System.out.println("Has four alphanumeric characters: " + hasAtleast4AlphaNumeric("abc#DE$01%23!##^$"));
System.out.println("Does not have four alphanumeric characters: " + hasAtleast4AlphaNumeric("!$#%#a#b&9$^$##^$"));
System.out.println("Does not have four alphanumeric characters: " + hasAtleast4AlphaNumeric("VVVV!$#%#a#b&9$^$##^$"));


Output:
    Has four alphanumeric characters: true
    Does not have four alphanumeric characters: false
    Has four alphanumeric characters: true

如果希望非常具体地说明运算符或子表达式在源字符串中必须匹配的出现次数,请使用大括号({})。大括号及其内容称为区间表达式。您可以指定一个精确的数字或范围。

正则表达式可能不是实现这一点的最佳工具。。。还有,重音字符呢,例如,é,á等?你也把它们算作字母数字吗?我只需要检查a-zA-Z0-9而不是重音符号。。好的,我们将检查一些中的每个字符(..){}。。。。我想用regex做起来很容易。。。谢谢