首页 > 解决方案 > 如何使用正则表达式在lookhead中给出范围,例如 ^(?=(.*[az]){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。我试过但没有工作 ^(?=(. [az]){1,3})(?=. [0-9]).{2,5}$

标签: javaregexregex-lookaroundslookahead

解决方案


尝试使用下面的正则表达式

(?=([\\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
}

推荐阅读