码迷,mamicode.com
首页 > Web开发 > 详细

js 正则之 判断密码类型

时间:2014-07-16 20:45:25      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   io   cti   

今天没啥写的,就分享个思路吧。
之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的。
如果用 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]+)$|^([\s\S]+)$/);
    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]+)$|^([\s\S]+)$/
可以拆分为

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

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

好了,今天分享就这些。

js 正则之 判断密码类型,布布扣,bubuko.com

js 正则之 判断密码类型

标签:style   blog   java   color   io   cti   

原文地址:http://www.cnblogs.com/52cik/p/js-regular-checkstr.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!