首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >密码表验证- RegEx

密码表验证- RegEx
EN

Stack Overflow用户
提问于 2015-09-29 14:20:01
回答 1查看 213关注 0票数 1

密码计引导用户开发一个强密码。我希望在计价器上实现下面的密码要求。我在下面的RegEx中添加了突出显示的代码,但是代码没有检测到所需的密码准则。检测以下需求的正确代码是什么?

  • 8+字符
  • 大写和小写字母
  • 特殊字符
  • 不得包含4+连续字母
  • 不能包含4+连续数

示例:

测试%401=不足

2323!=不足

Tlv!897% =强

302^PLs# =强

代码语言:javascript
运行
复制
if(val.length > 7 && val.match(/\d{4}/) && val.match(/[a-zA-Z]{4}/) && val.match(/[~,!,@,#,$,%,^,&,*,(,),+,-,?]/))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 07:30:16

下面是一种用于任务的单正则表达式方法:

代码语言:javascript
运行
复制
^(?=.*[a-zA-Z])(?=.*[^\w\s])(?!.*(?:[a-zA-Z]{4}|\d{4})).{8,}$

如果需要匹配特定的“特殊”字符,请使用[~!@#$%^&*()+?-]类而不是[^\w\s] (不是单词或空格字符)。分解:

代码语言:javascript
运行
复制
var rx = RegExp ("^" +                            // Start of string
                "(?=.*[a-zA-Z])" +               // Letter is required
                "(?=.*[^\\w\\s])" +              // A special character is required
                "(?!.*(?:[a-zA-Z]{4}|\\d{4}))" + // No 4 letters or digits on end are allowed
                ".{8,}" +                        // The whole length can be 8 or more characters
                "$"                              // End of string
              );

下面是一个工作片段:

代码语言:javascript
运行
复制
var ins = "Test%401";
var ins1 = "2323Ejsdh!";

var strong1 = "Tlv!897%";
var strong2 = "302^PLs#";

var rx = RegExp ("^" +                            // Start of string
                 "(?=.*[a-zA-Z])" +               // Letter is required
                 "(?=.*[^\\w\\s])" +              // A special character is required
                 "(?!.*(?:[a-zA-Z]{4}|\\d{4}))" + // No 4 letters or digits on end are allowed
                 ".{8,}" +                        // The whole length can be 8 or more characters
                 "$"                              // End of string
                );
document.getElementById("r").innerHTML += rx.test(ins) + "<br/>";
document.getElementById("r").innerHTML += rx.test(ins1) + "<br/>";
document.getElementById("r").innerHTML += rx.test(strong1) + "<br/>";
document.getElementById("r").innerHTML += rx.test(strong2) + "<br/>";
代码语言:javascript
运行
复制
<div id="r"/>

另一种方法是拆分条件:

代码语言:javascript
运行
复制
function CheckPass(val) {
   if(val.length <= 7) {
       return "Password is too short!";
   }
   else if (/\d{4}/.test(val)) {
          return "Password contains 4 digits on end!";
   }
   else if (/[a-zA-Z]{4}/.test(val)) {
          return "Password contains 4 letters on end!";
   }
   else if (!/[~!@#$%^&*()+?-]/.test(val)) {
          return "Password must contain at least one special character from the \"~!@#$%^&*()+?-\" set!";
   }
   else if (!/[a-z]/i.test(val)) {
          return "Password must contain at least one letter!";
   }
       else
           return "Password is strong!";
}
    
document.getElementById("r").innerHTML +=  "<b>Test%401</b>: "+CheckPass("Test%401") + "<br/>";
document.getElementById("r").innerHTML +=  "<b>2323Ejsdh!</b>: "+CheckPass("2323Ejsdh!") + "<br/>";
document.getElementById("r").innerHTML +=  "<b>23!34%12!</b>: "+CheckPass("23!34%12!") + "<br/>";
document.getElementById("r").innerHTML +=  "<b>23w34W12D</b>: "+CheckPass("23w34W12D") + "<br/>";
document.getElementById("r").innerHTML += "<b>Tlv</b>: "+ CheckPass("Tlv") + "<br/>";
document.getElementById("r").innerHTML +=  "<b>Tlv!897%</b>: "+CheckPass("Tlv!897%") + "<br/>";
document.getElementById("r").innerHTML +=  "<b>302^PLs#</b>: "+ CheckPass("302^PLs#");
代码语言:javascript
运行
复制
<div id="r"/>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32846412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档