如何使用JSON数组实现密码验证?求循环JSON数组校验密码的方法
帮你实现基于JSON规则数组的密码验证循环逻辑
没问题,我来帮你搞定这个循环验证的逻辑!你的思路是对的——用JSON数组存验证规则,然后循环遍历逐个校验,这样扩展性很强。不过你的现有代码有几个小问题,我帮你修正并给出完整实现:
首先先梳理下原代码的问题:
- 没有遍历规则数组,只写了一个单独的长度判断,没用到你定义的
pwdarray规则集合 - 正则表达式是字符串格式的,不能直接用来匹配,需要转换成
RegExp对象 - 长度判断的条件完全错误,不能拿密码长度和正则字符串直接比较
修正后的完整实现
// 你的密码验证规则数组(新增id字段对应DOM元素) var pwdarray = { "pwd": [ { "id": "length", "TEXT": "Password must be at least 6 character(s) long.", "EXPRESSION": "^.{6,}$" // 去掉前后的/,方便转成RegExp对象 }, { "id": "lowercase", "TEXT": "Password must contain at least 1 lowercase letter(s).", "EXPRESSION": "[a-z]" } ] }; var pswd = "textpasswordvalue"; // 遍历每个验证规则,逐个校验 pwdarray.pwd.forEach(function(rule) { // 将字符串格式的正则转换成可使用的RegExp实例 var regex = new RegExp(rule.EXPRESSION); // 验证密码是否符合当前规则 var isValid = regex.test(pswd); // 获取对应DOM元素,更新验证状态样式 var statusElement = $('#' + rule.id); if (isValid) { statusElement.removeClass('invalid').addClass('valid'); } else { statusElement.removeClass('valid').addClass('invalid'); } });
关键调整说明:
- 给每个规则新增
id字段,用来对应页面上显示验证状态的DOM元素(比如你原来的#length),这样循环时能精准定位到对应元素 - 去掉了正则字符串前后的
/,因为new RegExp()不需要这个分隔符,直接传入正则内容即可 - 使用
forEach遍历规则数组,对每个规则单独校验,后续新增验证规则只需要在JSON数组里加对象就行,不用修改核心逻辑代码 - 用
RegExp.test()方法判断密码是否符合正则规则,这是正则验证的标准用法
如果你的页面元素ID和规则的对应方式不想用新增id字段的方式,也可以根据TEXT关键词匹配或者按数组索引对应元素,但新增id字段是最清晰、易维护的方案。
内容的提问来源于stack exchange,提问作者Neal Caffery
相关产品推荐
相关产品推荐

