如何为Node.js密码处理代码添加大小写数字校验的正则约束
符合需求的修改后代码
var fs = require('fs'); // 按行读取输入文件内容 var lines = fs.readFileSync('input.txt').toString().trim().split('\n'); lines.forEach(line => { // 处理每行的ASCII值 var res = line.split(",").map(num => parseInt(num, 10)); function getPasswordLevel(res) { try { if (res.length < 8) throw "Weak password"; if (res.length == 8) throw "an average password"; if (res.length > 8) throw "a strong password"; } catch (err) { return err; } } function passwordEncryption(res) { var level = getPasswordLevel(res); // 长度不足直接返回弱密码提示 if (level === "Weak password") { console.log(level); return; } // 转成密码字符串 var passwordStr = res.map(code => String.fromCharCode(code)).join(""); // 正则校验规则:仅大小写字母+数字,且至少各含一个大写、小写、数字 const validRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z0-9]+$/; if (!validRegex.test(passwordStr)) { console.log(`'${passwordStr}' is an invalid password`); return; } // 符合规则输出对应等级 console.log(`'${passwordStr}' is ${level}`); } passwordEncryption(res); })
核心修改说明
- 适配多行输入:读取文件后按换行拆分,逐行处理每个密码的ASCII值,符合每行对应一个密码的需求
- 新增正则校验规则:使用正向预查正则同时满足两个要求:1. 密码仅由大小写字母、数字组成,无特殊字符;2. 至少包含1个大写字母、1个小写字母、1个数字
- 调整逻辑优先级:先判断长度是否小于8,符合直接输出弱密码提示,不进行后续转码和校验;长度符合要求的转码后先校验格式合法性,非法直接输出无效密码提示,合法再输出对应强度等级
- 输出内容完全匹配示例要求:格式、提示文案均和给出的参考示例一致
- 保留了要求的
passwordEncryption函数,密码生成和逻辑判断都在函数内完成
内容的提问来源于stack exchange,提问作者NameMC
相关产品推荐
相关产品推荐

