密码复杂度正则校验(字母大小写,数字,特殊字符)全包或至少3种

2023-11-06

        //1.全部包含:大写、小写、数字、特殊字符;
       String regex1 = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\\W_])^.*$";
 
        //2.无大写:小写、数字、特殊字符;
        String regex2 = "(?=.*[a-z])(?=.*[0-9])(?=.*[\\W_])^.*$";
 
        //3.无小写:大写、数字、特殊字符;
        String regex3 = "(?=.*[A-Z])(?=.*[0-9])(?=.*[\\W_])^.*$";
 
        //4.无数字:大写、小写、特殊字符;
        String regex4 = "(?=.*[A-Z])(?=.*[a-z])(?=.*[\\W_])^.*$";
 
        //5.无特殊字符:大写、小写、数字;
        String regex5 = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])^.*$";
 
        String regex = "(" + regex1 + ")|(" + regex2 + ")|(" + regex3 + ")|(" + regex4 + ")|(" + regex5 + ")";

特殊字符 (?=.*[\\W_]) 这个可以按自己要求修改 指定一些特殊字符(?=.*[~!@#$%^&*()_+?])

可以根据不同的要求组装最终的正则

字符串长度限制 {6,20}$

必须包含字母、数字、特殊字符 REGX_PWD_DR="^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[~!@#$%^&*()_+?])[0-9a-zA-Z~!@#$%^&*()_?]{6,20}$"

存在连续稍递增递减3位数字或字母
REGX_PWD2="^(?!.*([!-~])\\1{3,})(?!.*(?:012|210|123|321|234|432|345|543|456|654|567|765|678|876|789|987))(?!.*(?:ABC|CBA|BCD|DCB|CDE|EDC|DEF|FED|EFG|GFE|FGH|HGF|GHI|IHG|HIJ|JIH|IJK|KJI|JKL|LKJ|KLM|MLK|LMN|NML|MNO|ONM|NOP|PON|OPQ|QPO|PQR|RQP|QRS|SRQ|RST|TSR|STU|UTS|TUV|VUT|UVW|WVU|VWX|XWV|WXY|YXW|XYZ|ZYX)).+$";


  /**
     codeType:0数字,1字母
  大写民65—90,英文小写是从97—122
     **/
    function createRegexStr(codeType){
        var result='';
        var items=[];
        var i=(codeType===0)?0:65;
        var max=(codeType===0)?8:89;
        for(;i<max;i++){
            var item=[];
            item.push((codeType===0)?i:String.fromCharCode(i));
               //可根据自己的要求设置连续位数
            for(var j=1;j<=3;j++){
                item.push((codeType===0)?(i+j):(String.fromCharCode(i+j)));
            }
            items.push(item.join(''));
            items.push(item.reverse().join(''));
        }
//英文小写
        var i2 = 97,max2 = 121
        if(codeType === 1 ){
        for(;i2<max2;i++){
            var item=[];
            item.push((codeType===0)?i2:String.fromCharCode(i2));
            for(var j=1;j<=3;j++){
                item.push((codeType===0)?(i2+j):(String.fromCharCode(i2+j)));
            }
            items.push(item.join(''));
            items.push(item.reverse().join(''));
        }
}
        result+=items.join("|");
        result="(?:"+result+")";
        return result;
    }

    function check(str) {
        //可根据自己的要求设置连续位数 {4,}
         var regexStr = "^(?!.*([!-~])\\1{4,})";
         regexStr += "(?!.*" + createRegexStr(0) + ")";
         regexStr += "(?!.*" + createRegexStr(1) + ")";
         regexStr += ".+$";
         console.error(regexStr);
           //这里可能会出错,是因为出现在特殊字符需要转义情况,自行可根据regexStr手动添加转义得到正确的正则
        var regex = new RegExp(regexStr);
        return regex.test(str);
    }

 存在3位重复的数字和字母 
REGX_PWD3="(\\w)\\1{2,}";

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码复杂度正则校验(字母大小写,数字,特殊字符)全包或至少3种 的相关文章

  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐