今天老板要求我們網(wǎng)站密碼規(guī)則必須包含大寫字母小寫字母贿肩,數(shù)字和特殊字符峦椰,且長(zhǎng)度大于8位,30天未登陸鎖定賬號(hào)汰规,35天必須修改密碼汤功,且最近12次密碼不能相同。
下面介紹一下我是怎么驗(yàn)證密碼復(fù)雜度驗(yàn)證的溜哮,什么超期鎖定滔金,修改密碼的,對(duì)比一下上次登陸或修改的時(shí)間就OK啦茂嗓。
密碼復(fù)雜度驗(yàn)證分兩部分餐茵,第一部分是驗(yàn)證是否包含四種不同類型的字符,第二部分就是限制長(zhǎng)度大于8述吸,下面我們就來實(shí)現(xiàn)吧忿族,我們用正則表達(dá)式來驗(yàn)證:
首先,驗(yàn)證是否包含不同類型的字符蝌矛,我首先想到的是正向肯定預(yù)查表達(dá)式(?=pattern)
肠阱,這個(gè)式子的作用是:
正向肯定預(yù)查,在任何匹配pattern的字符串開始處匹配查找字符串朴读。這是一個(gè)非獲取匹配屹徘,也就是說,該匹配不需要獲取供以后使用衅金。例如噪伊,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”氮唯。預(yù)查不消耗字符鉴吹,也就是說,在一個(gè)匹配發(fā)生后惩琉,在最后一次匹配之后立即開始下一次匹配的搜索豆励,而不是從包含預(yù)查的字符之后開始。
由此我們就得到了第一部分的驗(yàn)證表達(dá)式:
/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_])/
上面的正則意思是至少要有一個(gè)大寫字母一個(gè)小寫字母瞒渠,一個(gè)數(shù)字良蒸,一個(gè)特殊符號(hào),在這里解釋一下\W
這個(gè)表達(dá)式伍玖,它表示 “匹配任何非單詞字符嫩痰。等價(jià)于“[^A-Za-z0-9_]”∏瞎浚可以看到串纺,它是排除了下劃線_
的丽旅,所以我在上面加上了下劃線。
OK纺棺,第一部分完成了榄笙,剩下驗(yàn)證長(zhǎng)度就小菜一碟啦,下面直接給大家寫上祷蝌,就不多做解釋了:
/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_]).{8,}/
大功告成办斑,謝謝大家一步步看到這里哦!