今天没啥写的,就分享个思路吧。之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的。如果用 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开始遍历结果集就可以得知是什么类型的了。
好了,今天分享就这些。
新闻热点
疑难解答