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

原生js實(shí)現(xiàn)密碼強(qiáng)度驗(yàn)證功能

 更新時(shí)間:2020年03月18日 11:43:22   作者:意外i  
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)密碼強(qiáng)度驗(yàn)證功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

我們在填寫表單的時(shí)候,特別是輸入密碼的時(shí)候,經(jīng)??吹綄?shí)時(shí)顯示密碼強(qiáng)度的效果,那么這種效果如何通過我們的原生js實(shí)現(xiàn)呢?

思路:

1.密碼通常是由數(shù)字,大寫字母,小寫字母以及特殊字符組成
2.密碼全部是純數(shù)字或者純大寫字母,或者純小寫字母,我們認(rèn)為是密碼強(qiáng)度較低
3.密碼由兩種混合,我們認(rèn)為密碼強(qiáng)度是中等的
4.密碼由三種或者四種混合,我們認(rèn)為這樣的密碼組合強(qiáng)度很強(qiáng)
5.通過判斷輸入的密碼每個(gè)字符,如果是數(shù)字返回1;如果是大寫字母,返回2;如果是小寫字母,返回4;如果是特殊字符,則返回8(至于為什么選擇返返回這些數(shù)字請(qǐng)看第六條);
6.初始化一個(gè)體現(xiàn)密碼強(qiáng)度的變量為0,在二進(jìn)制下表示也就是0000,將他與我們的返回值進(jìn)行二進(jìn)制相或運(yùn)算
7.比如初始值0000
與數(shù)字的返回值1(0001)相或運(yùn)算,等于0001;
與一個(gè)小寫字母和大寫字母組成的密碼相或就是0110;
與大寫字母,小寫字母,數(shù)字組成的密碼相或就是0111;
與大寫字母,小寫字母,數(shù)字,特殊字符的密碼相或就是1111;
8.將相或結(jié)果賦值給這個(gè)初始值,通過判斷這個(gè)值在二進(jìn)制下有多少個(gè)1,就能判斷對(duì)應(yīng)密碼強(qiáng)度(用0001與這個(gè)值做相并計(jì)算,同時(shí)做無符號(hào)右移運(yùn)算,即可獲得1的個(gè)數(shù))

以上就是我們的思路,那么我們就可以開始書寫我們的代碼

①創(chuàng)建一個(gè)函數(shù),判斷輸入值的每一個(gè)字符由什么組成的

function charMode(char){
 switch (true) {
  case (char>=48&&char<=57):
   return 1;
   break;
  case (char>=65&&char<=90):
   return 2;
   break;
   case (char>=97&&char<=122):
   return 4;
   break;

  default:
   return 8;
   break;
 } 
}

這里也可以用if else 來做判斷,只是沒有switch看起來這么爽,同時(shí)這里注意,switch()括號(hào)里傳入的不是輸入值,而是一個(gè)true;因?yàn)閏ase后面返回的是一個(gè)布爾值,判斷的是布爾值之間是否相等(switch做全等比較,不進(jìn)行類型轉(zhuǎn)換)

②創(chuàng)建一個(gè)函數(shù),用于判斷整個(gè)輸入串的密碼強(qiáng)度類型

function checkPsw(password){
 strengh=0;//定義一個(gè)全局變量用于檢測密碼強(qiáng)度
  for(var i=0;i<password.length;i++){   strengh|=charMode(password.charCodeAt(i));
 }
}

這里 |= 的意思是做相或運(yùn)算,并賦值

③創(chuàng)建一個(gè)函數(shù),計(jì)算密碼強(qiáng)度

function charStrengh(strengh){
 var reference=0;
 for(var i=0;i<4;i++){
  if(strengh&1){
   reference++;
  }
  strengh>>>=1;//無符號(hào)右移一位繼續(xù)匹配
 }
 return reference;
}

這里&1意思是與1(0001)做且運(yùn)算,>>>=的意思是做無符號(hào)右移,比如0101無符號(hào)右移就是0010;再做一次無符號(hào)右移就是0001;

最后我們通過判斷reference的數(shù)字就可以知道密碼強(qiáng)度了,
再參考上一節(jié)的博客日志,實(shí)時(shí)驗(yàn)證輸入內(nèi)容,通過樣式設(shè)置就可以達(dá)到密碼強(qiáng)度實(shí)時(shí)驗(yàn)證效果了

總結(jié):

在這里我們是通過判斷鍵碼來實(shí)現(xiàn)判斷到底是數(shù)字還是大寫字母還是小寫字母,其實(shí)我們還可以使用強(qiáng)大的正則表達(dá)式來實(shí)現(xiàn);
常用鍵碼:
數(shù)字48-57
大寫字母65-90
小寫字母97-122

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

相關(guān)文章

  • js調(diào)用css屬性寫法

    js調(diào)用css屬性寫法

    對(duì)于沒有中劃線的css屬性一般直接使用style.屬性名即可,對(duì)于含有中劃線的css屬性,將每個(gè)中劃線去掉并將每個(gè)中劃線后的第一個(gè)字符換成大寫即可,感興趣的朋友可以參考下
    2013-09-09
  • js構(gòu)造函數(shù)、索引數(shù)組和屬性的實(shí)現(xiàn)方式和使用

    js構(gòu)造函數(shù)、索引數(shù)組和屬性的實(shí)現(xiàn)方式和使用

    本文主要介紹和小結(jié)js的構(gòu)造函數(shù),關(guān)聯(lián)數(shù)組的實(shí)現(xiàn)方式和使用,及不可變對(duì)象和它的實(shí)現(xiàn)方式及他們使用過程中要注意的點(diǎn),需要的朋友可以參考下
    2014-11-11
  • js 實(shí)現(xiàn)在2d平面上畫8的方法

    js 實(shí)現(xiàn)在2d平面上畫8的方法

    今天小編就為大家分享一篇js 實(shí)現(xiàn)在2d平面上畫8的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 通過BootStrap實(shí)現(xiàn)輪播圖的實(shí)際應(yīng)用

    通過BootStrap實(shí)現(xiàn)輪播圖的實(shí)際應(yīng)用

    js我們沒有學(xué)過,今天我是用bootstrap實(shí)現(xiàn)輪播圖的效果,非常不錯(cuò)代碼簡單易懂,需要的朋友參考下吧
    2016-09-09
  • JavaScript this 深入理解

    JavaScript this 深入理解

    一直以來,對(duì)于JavaScript 中的this的理解都是很模糊的, 特別是對(duì)函數(shù)進(jìn)行apply 與 call 調(diào)用。這兩個(gè)操作如果沒有很好的理解 JavaScript中this的概念,會(huì)越搞越迷糊。
    2009-07-07
  • Qt利用布局widget和ScrollArea實(shí)現(xiàn)抽屜效果(實(shí)例代碼)

    Qt利用布局widget和ScrollArea實(shí)現(xiàn)抽屜效果(實(shí)例代碼)

    這篇文章主要介紹了Qt利用布局,widget和ScrollArea實(shí)現(xiàn)抽屜效果,本文通過實(shí)例代碼圖文展示給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 微信小程序傳值常用的4種方式

    微信小程序傳值常用的4種方式

    微信小程序開發(fā)中的大部分知識(shí)點(diǎn)和前端開發(fā)是一模一樣的,這篇文章主要給大家介紹了關(guān)于微信小程序傳值常用的4種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • javascript中的數(shù)字與字符串相加實(shí)例分析

    javascript中的數(shù)字與字符串相加實(shí)例分析

    javascript中的數(shù)字與字符串相加實(shí)例分析,學(xué)習(xí)js的朋友可以參考下。
    2011-08-08
  • 跟我學(xué)習(xí)javascript的prototype,getPrototypeOf和__proto__

    跟我學(xué)習(xí)javascript的prototype,getPrototypeOf和__proto__

    跟我學(xué)習(xí)javascript的prototype,getPrototypeOf和__proto__,深入學(xué)習(xí)了三個(gè)用來訪問prototype的方法,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Boostrap入門準(zhǔn)備之border box

    Boostrap入門準(zhǔn)備之border box

    之前在學(xué)習(xí)Bootstrap的過程中,遇到各種奇葩的坑,如果在學(xué)習(xí)bootstrap之前,準(zhǔn)備工作先做好,就可以或多或少的避開一些坑。下面小編開始給大家介紹border-box這個(gè)屬性的知識(shí)。感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評(píng)論

福清市| 旅游| 新河县| 义马市| 青浦区| 西华县| 呼图壁县| 武宣县| 泗洪县| 岢岚县| 西乌珠穆沁旗| 宁化县| 西充县| 长治市| 宿松县| 崇阳县| 丽江市| 张家口市| 乡宁县| 新和县| 连山| 桑日县| 祁连县| 建水县| 习水县| 饶阳县| 沧源| 祥云县| 扎兰屯市| 郴州市| 惠州市| 马鞍山市| 泰顺县| 河津市| 平舆县| 新干县| 鸡泽县| 静安区| 福鼎市| 沙河市| 邢台市|