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]+)$|^([\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 開始遍歷結果集就可以得知是什么類型的了。

好了,今天分享就這些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM