题解 | #密码验证合格程序#

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

该题用正则表达式来解,完整代码如下:
const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
//个人觉得Js Node版本获取输入用起来比V8版本要麻烦一些
rl.on("line", function (line) {
    console.log(checkValid(line));
});

function checkValid(str) {
    let output = 'OK';
    //重点解释一下下面这条正则表达式,整体思想是排出单一种,单两种符号的全部组合,剩下的自然是三种以上符号的组合
    let regex = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,}$/
    if (!str.match(regex)) {
        output = 'NG';
    }
    //这里没有使用正则表达式,因为在用例中会出现特殊符号如‘(’等,如果把该符号直接转成正则表达式,则会报错,故采用includes方法
    for (let i = 0; i < str.length-3; i++) {
        let newStr1 = str.slice(i, i+3); newStr2 = str.slice(i+3);
        if (newStr2.includes(newStr1)) {
            output = 'NG';
            break;
        }
    }
    return output;
}


全部评论

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务