zoukankan      html  css  js  c++  java
  • js 正则之 判断密码类型

    今天没啥写的,就分享个思路吧。
    之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的。
    如果用 if 或者 switch 写看着确实蛋疼,如果有 7, 8 条判断,那就老长一大段了。
    这个思路是我之前看 jQuery 源码的时候学到的,感觉用在这也不错。
    先来看代码吧。

    function test(str, re, msg) {
        var ret = str.match(re || /^(d+)$|^([a-zA-Z]+)$|^([a-zA-Z].+)$|^([0-9a-zA-Z]+)$|^([sS]+)$/);
        var msg = msg || ["", "纯数字", "纯字母", "字母开头+任意字符", "数字+字母任意组合", "未分类"];
        var i = 0;
        while (ret[++i] === undefined);
        return msg[i];
    }
    
    console.log(test("123"));
    console.log(test("sss"));
    console.log(test("123xx"));
    console.log(test("a123xx"));
    console.log(test("%$#@"));

    可以看到利用一个正则和一个数组就完成了效验。
    其实思路很简单,利用了正则的捕获组来对应数组里的字符。
    /^(d+)$|^([a-zA-Z]+)$|^([a-zA-Z].+)$|^([0-9a-zA-Z]+)$|^([sS]+)$/
    可以拆分为

     /^(d+)$/ 对应 "纯数字"
     /^([a-zA-Z]+)$/ 对应 "纯字母"
     /^([a-zA-Z].+)$/ 对应 "字母开头+任意字符"
     /^([0-9a-zA-Z]+)$/ 对应 "数字+字母任意组合"
     /^([sS]+)$/ 对应 "未分类"

    如果对应的捕获组捕获到了,对应的分组下就会有值,如果没捕获到就会是 undefined
    所以我们直接从 1 开始遍历结果集就可以得知是什么类型的了。

    好了,今天分享就这些。

  • 相关阅读:
    测试用例设计白皮书--测试用例设计综合策略
    流程控制
    与用户交互,格式化输出,基本运算符
    jupyter的安装
    python程序运行的方式、变量、注释、内存管理、数据类型
    博客园 文章爬取(乱写的,有的爬不下来)
    Python 九九乘法表打印
    Python 爬歌曲
    redis快速入门
    UDPsocket编程
  • 原文地址:https://www.cnblogs.com/52cik/p/js-regular-checkstr.html
Copyright © 2011-2022 走看看