如何使用正则表达式在lookhead中给出范围

Question-

1]String length is 2 to 5 

2]String contains at least 1 char and maximum 3 char

3]Atleast one number 

我想使用lookhead。我试过但没有用 ^(?=(. [az]){1,3})(?=. [0-9]).{2,5}$


炎炎设计
浏览 120回答 2
2回答

www说

您可以使用正向前瞻来断言字符串的长度为 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]+$ 匹配一个或多个字符或数字直到字符串结束演示

翻过高山走不出你

尝试使用下面的正则表达式(?=([\\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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java