为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2021-06-03 17:08:56
Question-1]String length is 2 to 5 2]String contains at least 1 char and maximum 3 char3]Atleast one number 我想使用lookhead。我试过但没有用 ^(?=(. [az]){1,3})(?=. [0-9]).{2,5}$
查看完整描述

2 回答

?
www说

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]+$ 匹配一个或多个字符或数字直到字符串结束

演示


查看完整回答
反对 回复 2021-06-17
?
翻过高山走不出你

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

}


查看完整回答
反对 回复 2021-06-17
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信