需求:使用js检测纯数字密码强度,检测规则可以如下:1)相邻数字不超过3位;(123895,321874)2)不超过3位相同;(111895)3)重复号码不能超过2组;(898923,121212,768768)4)不能怀疑是生日数字:(890207,791211)5)不能是回文数字:(653356,125521)思路1,不能将3位以上的数字相邻循环整个字符串,用后一位减去前一位,取两者之差的绝对值。如果差的绝对值等于1,则表示前后2位相邻。为什么要取差值的绝对值呢? 因为密码中的数字可能是正序也可能是倒序,比如:123985、6540282,相同的数字不能超过3位正则:/([0-9])\1{2}/3。不要重复超过2组数字。常规使用:/([0-9]{2,})\1/如果中间还有其他字符,可以在中间加上[0-9]*)。4.不可怀疑生日号码使用规律: 年规律:/([0-9][0-9])/;取密码前2位判断 月份规律性:/(0[1-9]|1[012])/;取密码中间2位判断 日期规律性:/([12][0-9]|0[1-9]|3[01])/;取密码的最后一位5.不能是回文的回文数是什么? 顺读和逆读相同的都是回文数!简单点就是:如果正反面相同,就是回文数。由于回文数字前后相同,所以只需要将数字密码取反,与原密码进行比较即可。如果它们相同,则说明它是一个回文数字代码。实施函数numberWeakPasswordCheck(pwd,options){if(!options){options={};}变种结果=1;varlengthMin=options.lengthMin||6;//最小密码长度varadjacentNumberCount=options.adjacentNumberCount;//连续相邻数字数量,如:845630、123956if(!adjacentNumberCount&&adjacentNumberCount!==0){adjacentNumberCount=3;}varcontinuousDuplecatedCharsCount=options.continuousDuplecatedCharsCount;//连续重复字符数,111234if(!continuousDuplecatedCharsCount&&continuousDuplecatedCharsCount!==0){continuousDuplecatedCharsCount=3;}varcontinuousDuplecatedGroupdCharsCount=options.continuousDuplecatedGroupdCharsCount;//连续重复分组字符数量,如:121245、12312368if(!continuousDuplecatedGroupdCharsCount&&continuousDuplecatedGroupdCharsCount!==0){continuousDuplecatedGroupdCharsCount=2;}varallowPalindrome=options.al低回文||错误的;//是否允许回文字符,如:783387varallowBirthday=options.allowBirthday||错误的;//是否允许生日日期组合,如:950127if(typeofpwd=="number"){pwd=pwd+'';}if(typeofpwd!='string'){return{isWeak:true,code:-1};}pwd=pwd.trim();如果(!/^\d+$/.test(pwd)){return{isWeak:true,code:-2};}if(pwd.length
