You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:07