Java Regex匹配String密码

时间:2017-07-24 00:27:51

标签: java regex

我最近在教科书中遇到过这个问题:

我想写一个方法来检查一个字符串是否有:

  1. 至少十个字符
  2. 只有字母和数字
  3. 至少三位数
  4. 我试图通过Regx解决它,而不是遍历每个角色;这是我到目前为止所得到的:

    String regx = "[a-z0-9]{10,}";
    

    但这只符合前两个条件。我该如何处理第三个条件?

1 个答案:

答案 0 :(得分:4)

您可以使用正向前瞻获取第三个条件,如下所示:

^(?=(?:.*\d){3,})[a-z0-9]{10,}$
  • ^表示字符串的开头。
  • (?= ... )是正向前瞻,它将搜索整个字符串以匹配(?=)之间的任何内容。
  • (?:.*\d){3,}在字符串中的任意位置匹配至少3位数。
    • .*\d匹配以任何(或无)字符开头的数字(如果省略则只有连续的数字匹配)。
    • {3,}匹配.*\d中的三个或更多个。
    • (?: ... )是一个非捕获组。
  • $表示字符串结束。