如何使用正则表达式在 lookhead 中给出范围,例如 ^(?=(.*[a-z]){1,3})(?=.*[0-9]).{2,5}$
How to give range in lookhead using regex e.g ^(?=(.*[a-z]){1,3})(?=.*[0-9]).{2,5}$
Question-
1]String length is 2 to 5
2]String contains at least 1 char and maximum 3 char
3]Atleast one number
我想使用 lookhead。
我试过但没有用
^(?=(.[a-z]){1,3})(?=.[0-9]).{2,5}$
尝试使用以下正则表达式
(?=([\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
}
您可以使用正向先行断言字符串的长度为 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]+$
匹配一个字符或数字一次或多次,直到字符串结束
Question-
1]String length is 2 to 5
2]String contains at least 1 char and maximum 3 char
3]Atleast one number
我想使用 lookhead。 我试过但没有用 ^(?=(.[a-z]){1,3})(?=.[0-9]).{2,5}$
尝试使用以下正则表达式
(?=([\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
}
您可以使用正向先行断言字符串的长度为 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]+$
匹配一个字符或数字一次或多次,直到字符串结束