Question-
1]String length is 2 to 5
2]String contains at least 1 char and maximum 3 char
3]Atleast one number
我想使用回头针。 我试过但不起作用 ^(?=(。 [a-z]){1,3})(?=。 [0-9])。{2,5} $
答案 0 :(得分:1)
尝试使用以下正则表达式
(?=([\\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
}
答案 1 :(得分:0)
您可以使用积极的前瞻来断言字符串的长度为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]+$
一次或多次匹配一个字符或一个数字,直到字符串结尾