最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascrpt密碼強(qiáng)度校驗(yàn)函數(shù)詳解

 更新時(shí)間:2020年03月18日 16:21:27   作者:白天的貓頭鷹  
這篇文章主要為大家詳細(xì)介紹了javascrpt密碼強(qiáng)度校驗(yàn)函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近寫了個(gè)密碼強(qiáng)度驗(yàn)證的函數(shù),主要驗(yàn)證以下內(nèi)容

1、密碼最小和最大長度

2、連續(xù)字符串出現(xiàn)的次數(shù)

3、字符連續(xù)出現(xiàn)的次數(shù)

4、禁止特定的字符串作為密碼

5、密碼字符串的組合強(qiáng)度要求,必須含有大小寫字母,必須含有數(shù)字,必須含有特殊字符

6、輸入密碼必須與確認(rèn)密碼一致

7、支持禁止使用用戶名作為密碼

8、是否存在連續(xù)性的字符串,是否存在逆序性的字符串

(function(window, verifyPwd){
  window.verifyPwd = {
    /*最小長度*/
    minLength  : 6
 
    /*最大長度*/
    maxLength  : 18,
 
    /*字符重復(fù)次數(shù)*/
    repeatCount : 0,
 
    /*連續(xù)字符*/
    seriesCount : 3,
 
    /*特定過濾字符串*/
    filter   : [
      "qaz",
      "wsx",
      "edc",
      "qwe",
      "asd",
      "zxc"
    ],
 
    /*允許的字符串*/
    arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],
 
    /**
     * 驗(yàn)證密碼
     * @param userName   用戶名
     * @param pwd      密碼
     * @param confirmPwd  確認(rèn)密碼
     * @returns {boolean}
     */
    verify : function(userName, pwd, confirmPwd){
      userName = trim(userName);
      pwd   = trim(pwd);
 
      if(!userName || userName.length == 0){
        alert('請先輸入用戶名');
 
        return false;
      }
 
      if(!pwd || pwd.length == 0){
        alert('請輸入密碼');
 
        return false;
      }
 
      if (pwd.length < this.minLength) {
        alert('密碼長度至少需要' + this.minLength + '位');
 
        return false;
      }
 
      if (pwd.length > this.maxLength) {
        alert('密碼長度超過'+ this.maxLength +'位');
        return false;
      }
 
      /*判斷輸入密碼與確認(rèn)密碼是否一致*/
      if(confirmPwd && confirmPwd.length > 0){
        if(pwd != confirmPwd){
          alert('輸入密碼與確認(rèn)密碼不一致');
          return false;
        }
      }
 
      /*判斷密碼中是否存在用戶名*/
      if (pwd.indexOf(userName) >= 0) {
        alert('密碼中不能出現(xiàn)用戶名為' + userName);
        return false;
      }
 
      if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {
        alert('密碼沒有包含數(shù)字');
        return false;
      }
 
      if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {
        alert('密碼沒有包含小寫字母');
        return false;
      }
 
      if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {
        alert('密碼沒有包含大寫字母');
        return false;
      }
 
      if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {
        alert('密碼沒有包含!@#$%&*_等至少一個(gè)特殊字符');
        return false;
      }
 
      /*判斷是否存在過濾性字符串*/
      if(this.filter.length > 0){
        for(var i = 0, length = this.filter.length; i < length; i++){
          var value = this.filter[i];
 
          if(pwd.indexOf(value) < 0){
            continue;
          }
 
          alert("密碼中不允許含有"+ value);
 
          return false;
        }
      }
 
      /*判斷是否存在重復(fù)字符串*/
      if(this.isRepeate(pwd)){
        alert('密碼中不能出現(xiàn)重復(fù)字符');
        return false;
      }
 
      /*判斷是否存在連續(xù)性字符串*/
      if(this.isSeries(pwd)){
        alert('密碼中不能存在'+ this.seriesCount +'個(gè)以上的連續(xù)字符');
        return false;
      }
 
      return true;
    },
 
    /**
     * 是否存在重復(fù)字符串
     * @param pwd    密碼
     * @returns {boolean}
     */
    isRepeate : function(pwd){
      if(pwd && pwd.length > 0){
        for(var i = 0, length = pwd.length; i < length; i++){
          var currentChar = pwd.charAt(i);
          var prevChar  = i == 0 ? "" : pwd.charAt(i - 1);
 
          if(currentChar == prevChar){
            return true;
          }
        }
      }
 
      return false;
    },
 
    /**
     * 是否存在連續(xù)性字符串
     * @param pwd    密碼
     * @returns {boolean}
     */
    isSeries : function(pwd){
      if(pwd && pwd.length > 0) {
        /*自身算起*/
        var ascSeriesCount = 1;
        var descSeriesCount= 1;
 
        /*存在順序型的連續(xù)性的字符串*/
        for (var i = 0, length = pwd.length; i < length; i++) {
          var currentCharCode = pwd.charCodeAt(i);
          var prevCharCode  = i == 0 ? "" : pwd.charCodeAt(i - 1);
 
          if(currentCharCode == prevCharCode + 1){
            ascSeriesCount++;
 
            if(ascSeriesCount == this.seriesCount){
              return true;
            }
          } else{
            ascSeriesCount = 1;
          }
        }
 
        /*存在逆序性的連續(xù)性的字符串*/
        for (var i = pwd.length - 1; i >= 0; i--) {
          var currentCharCode = pwd.charCodeAt(i);
          var prevCharCode  = (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";
 
          if(currentCharCode + 1 == prevCharCode){
            descSeriesCount++;
 
            if(descSeriesCount == this.seriesCount){
              return true;
            }
          } else{
            descSeriesCount = 1;
          }
        }
      }
 
      return false;
    },
 
    /**
     * 初始化方法
     * @param userNameId  用戶id
     * @param pwdId
     */
    init : function(userNameId, pwdId){
      $("#"+ pwdId).on("blur", function(){
        var userName = $("#"+ userNameId).val();
        var pwd = this.value;
 
        if(userName.length == 0){
          $("#"+ userNameId).focus();
          alert("請輸入用戶名");
 
          return false;
        }
 
        /*若驗(yàn)證正確,進(jìn)行加密處理*/
        if(this.verify(userName, pwd)){
          pwd = md5(pwd);
          $("#"+ pwdId).val(pwd);
        }
      });
    }
  }
})(window, undefined);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲

    JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲

    最近利用Javascript實(shí)現(xiàn)了一個(gè)小游戲,覺著還不錯(cuò),所以分享給大家,下面這篇文章主要給大家介紹了利用JavaScript實(shí)現(xiàn)一個(gè)空中避難的小游戲的相關(guān)資料,文中給出了完整的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-06-06
  • javascript中Function類型詳解

    javascript中Function類型詳解

    這篇文章主要介紹了javascript中Function類型詳解的相關(guān)資料,需要的朋友可以參考下
    2015-04-04
  • JavaScript獲取圖片的原始尺寸以寬度為例

    JavaScript獲取圖片的原始尺寸以寬度為例

    這篇文章主要介紹了JavaScript如何獲取圖片的原始尺寸以寬度為例,需要的朋友可以參考下
    2014-05-05
  • js中各種時(shí)間日期格式之間的轉(zhuǎn)換代碼示例

    js中各種時(shí)間日期格式之間的轉(zhuǎn)換代碼示例

    這篇文章主要介紹了js中各種時(shí)間日期格式之間轉(zhuǎn)換的相關(guān)資料,還有獲取今天的年月日和計(jì)算兩個(gè)日期之間的相差天數(shù)的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • js前端實(shí)現(xiàn)圖片壓縮上傳的示例代碼

    js前端實(shí)現(xiàn)圖片壓縮上傳的示例代碼

    這篇文章主要為大家詳細(xì)介紹了js前端如何實(shí)現(xiàn)圖片壓縮上傳的效果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,有需要的小伙伴可以參考一下
    2023-11-11
  • javascript中兼容主流瀏覽器的動(dòng)態(tài)生成iframe方法

    javascript中兼容主流瀏覽器的動(dòng)態(tài)生成iframe方法

    這篇文章主要介紹了javascript中兼容主流瀏覽器的動(dòng)態(tài)生成iframe方法,需要的朋友可以參考下
    2014-05-05
  • 一文詳解JavaScript中的Mixin

    一文詳解JavaScript中的Mixin

    類的出現(xiàn)最終使JavaScript非常容易使用繼承法,JavaScript類比大多數(shù)人意識(shí)到的更強(qiáng)大,它是構(gòu)建真正的mixins的良好基礎(chǔ),本文介紹JavaScript中的Mixin介紹的非常詳細(xì),需要的小伙伴可以參考閱讀一下
    2023-04-04
  • JS實(shí)現(xiàn)touch 點(diǎn)擊滑動(dòng)輪播實(shí)例代碼

    JS實(shí)現(xiàn)touch 點(diǎn)擊滑動(dòng)輪播實(shí)例代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)touch 點(diǎn)擊滑動(dòng)輪播實(shí)例代碼,需要的朋友可以參考下
    2017-01-01
  • Worker加載JS腳本跨域問題的幾種解決方法

    Worker加載JS腳本跨域問題的幾種解決方法

    Web Worker 是一種在后臺(tái)線程中運(yùn)行的 JavaScript 腳本,允許我們在不阻塞主線程的情況下執(zhí)行復(fù)雜計(jì)算或處理,Worker 加載的 JS 腳本如果存在跨域問題,可能導(dǎo)致腳本無法正常加載和執(zhí)行,以下是解決 Worker 加載 JS 腳本跨域問題的幾種方法,需要的朋友可以參考下
    2025-02-02
  • 你可能不知道的package.json屬性詳解

    你可能不知道的package.json屬性詳解

    package.json俗稱依賴配置文件(我自己取的名),最主要的作用就是管理項(xiàng)目中所用到的依賴,下面這篇文章主要給大家介紹了關(guān)于package.json屬性的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論

祁东县| 绥德县| 望城县| 明光市| 梅河口市| 鄯善县| 仁寿县| 咸宁市| 庆阳市| 文登市| 赫章县| 赫章县| 南丹县| 麟游县| 涟水县| 全南县| 崇礼县| 贡山| 宽甸| 温泉县| 米脂县| 中山市| 贵州省| 郸城县| 双峰县| 宿迁市| 长白| 奉节县| 东至县| 东兰县| 罗源县| 阜康市| 保靖县| 隆林| 略阳县| 通城县| 中宁县| 黄石市| 徐州市| 来宾市| 彰化市|