2 回答
TA贡献1775条经验 获得超8个赞
您可以使用正向前瞻来断言字符串的长度为 2-5 个字符,并且至少有 1 个数字和 1 个字符[a-z]
。为了确保最多有 3 个字符,可以使用否定前瞻来断言您不匹配字符 4 次。
^(?=[a-z0-9]{2,5}$)(?=.*[a-z])(?=.*[0-9])(?!(?:.*[a-z]){4})[a-z0-9]+$
解释
^
断言行的开始(?=[a-z0-9]{2,5}$
断言 2 -5 个字符的正向预测(?=.*[a-z])
断言 1 个字符的正向预测(?=.*[0-9])
断言 1 位数的正向预测(?!(?:.*[a-z]){4})
负前瞻不匹配字符 4 次[a-z0-9]+$
匹配一个或多个字符或数字直到字符串结束
TA贡献1875条经验 获得超3个赞
尝试使用下面的正则表达式
(?=([\\w\\W]{2,5}$))(?=(.*([0-9]){1,}.*))^[^A-Za-z]*[A-Za-z](?!(?:[^A-Za-z]*[A-Za-z]){3})
public static void main(String[] args) {
String regex = "(?=([\\w\\W]{2,5}$))(?=(.*([0-9]){1,}.*))^[^A-Za-z]*[A-Za-z](?!(?:[^A-Za-z]*[A-Za-z]){3}).*";
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("AB2").find()); // output true
System.out.println(pattern.matcher("AB2C").find()); // output true
}
添加回答
举报