java正则表达式强密码

要求:

1.必须包含数字、大小写字母
2.密码位数在8-16位

    public static boolean checkPas(String pas) {
        Pattern pattern = Pattern.compile("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$");
        Matcher matcher = pattern.matcher(pas);
        return matcher.matches();
    }

解释一下:

  • (?=.*\d) :表示必须包含数字
  • (?=.*[a-z]):表示必须包含小写字母
  • (?=.*[A-Z]):表示必须包含大写字母
  • .{8,16}:表示任意字符重复8-16次

需要注意的是为什么使用(?=.*\\d) 便可以保证一定会存在数字呢?

首先要知道?=表示的是零宽断言。?=ing即表示匹配以ing结尾的字符串。例如doing,便是匹配其中的do,注意并不会匹配ing。
(?=.*\\d)又代表什么意思呢?
匹配一个字符串,该字符串后接任意字符+数字。这个字符串实际上就是空字符串。因此在正则表达式"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$"中。
(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])都表示匹配那样一个空字符串。也就意味着我们的密码必须包含数字、大小写字母。后续的.{8,16}则仅代表重复8到16次的任意字符。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 6,473评论 0 9
  • 一、什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否...
    木马不在转阅读 6,296评论 8 21
  • 参考原文:http://www.admin10000.com/document/5944.html 一、什么是正则...
    Louis_hey阅读 4,264评论 0 1
  • 一、什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否...
    Suger_森阅读 2,778评论 0 0
  • 原文来自:http://www.admin10000.com/document/5944.html 一、什么是正则...
    xcp123阅读 1,137评论 0 1