摘要:簡言本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡單,一個(gè)更復(fù)雜和安全。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來表示元素重復(fù)出現(xiàn)的次數(shù)。你可以根據(jù)項(xiàng)目需要,自己調(diào)整上述正則表達(dá)式。
簡言
本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡單,一個(gè)更復(fù)雜和安全。并分別給出了兩個(gè)方案的解析和測(cè)試程序。一般大家可以根據(jù)自己的項(xiàng)目的實(shí)際需要,自行定義自己的密碼正則約定。
前言用戶注冊(cè)時(shí),都會(huì)用到密碼正則校驗(yàn)。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。
方案1 (簡單)假設(shè)密碼驗(yàn)證做如下規(guī)則定義:
最短6位,最長16位 {6,16}
可以包含小寫大母 [a-z] 和大寫字母 [A-Z]
可以包含數(shù)字 [0-9]
可以包含下劃線 [ _ ] 和減號(hào) [ - ]
根據(jù)以上規(guī)則,很容易給出正則字面量定義如下:
var pattern = /^[w_-]{6,16}$/;方案1分析 字面量 / /
正則表達(dá)式的字面量定義為包含在一對(duì)斜杠(/)之間的字符,例如:
var pattern = /s$/;
上述字面量匹配所有以字母“s”結(jié)尾的字符串。
字符類 [ ]將字符放進(jìn)方括號(hào)內(nèi)就組成了字符類。一個(gè)字符類可以匹配它所包含的任意字符。因此,正則表達(dá)式/[abc]/就和字母“a”,“b”,“c”中的任意一個(gè)都匹配。
字符類可以使用連字符來表示字符范圍。要匹配拉丁小寫字母可以使用/[a-z]/。
字符類 w字符類 w 匹配任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9]。
[w_-]表示匹配任意的拉丁大小寫字母,數(shù)字再加上下劃線和減號(hào)。
重復(fù) {}在正則表達(dá)式中用{ }來表示元素重復(fù)出現(xiàn)的次數(shù)。
{n,m} 匹配前一項(xiàng)至少n次,但不能超過m次
{n,} 匹配前一項(xiàng)n次或更多次
{n} 匹配前一項(xiàng)n次
[w_-]{6,16} 表示匹配任意的拉丁大小寫字母,數(shù)字再加上下劃線和減號(hào)出現(xiàn)最少6次,最多16次。
匹配位置^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
/^w/ 匹配以大小寫字母或數(shù)字開頭的字符串。
方案1測(cè)試給出測(cè)試結(jié)果如下:
var pattern = /^[w_-]{6,16}$/; pattern.test("123456") = true; pattern.test("-ifat33") = true; pattern.test("42du") = false; pattern.test("du42du42du42du421") = false; pattern.test("42du42@") = false;
查看源碼
根據(jù)測(cè)試結(jié)果可以看出,方案1只是對(duì)密碼做了簡單的限定,不能保證密碼的強(qiáng)度和帳號(hào)安全。
方案2 (安全)假設(shè)密碼驗(yàn)證做如下規(guī)則定義:
最短6位,最長16位 {6,16}
必須包含1個(gè)數(shù)字
必須包含2個(gè)小寫字母
必須包含2個(gè)大寫字母
必須包含1個(gè)特殊字符
根據(jù)以上規(guī)則,很容易給出正則字面量定義如下:
var pattern = /^.*(?=.{6,16})(?=.*d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?()]).*$/;方案2分析 字符類 .
字符類 . 表示除換行符和其他Unicode行終止符之外的任意字符。
正向先行斷言 (?= )在符號(hào)“(?=” 和 “)” 之間加入一個(gè)表達(dá)式,它就是一個(gè)先行斷言,用以說明圓括號(hào)內(nèi)的表達(dá)式必須正確匹配。比如:/Java(?=:)/ 只能匹配Java且后面有冒號(hào)的。
(?=.*[!@#$%^&*?()])該先行斷言表示,必須包括一個(gè)特殊字符。上述表達(dá)式中的10個(gè)特殊字符為鍵盤1,2...0的上檔鍵字符,也可以添加別的特殊字符。注意:如果添加字符是正則表達(dá)式中具有特殊含義的,需要在符號(hào)前加反斜線()轉(zhuǎn)義。
方案2測(cè)試給出測(cè)試結(jié)果如下:
var pattern = /^.*(?=.{6,16})(?=.*d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?()]).*$/; pattern.test("du42DU!") = true; pattern.test("duDUd!") = false; pattern.test("42dud!") = false; pattern.test("42DUD!") = false; pattern.test("42duDU") = false; pattern.test("42duU(") = false; pattern.test("42dUU!") = false;
查看源碼
從以上測(cè)試可以看出,密碼足夠強(qiáng)壯和安全。你可以根據(jù)項(xiàng)目需要,自己調(diào)整上述正則表達(dá)式。
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93286.html
摘要:用戶名正則用戶名正則,到位字母,數(shù)字,下劃線,減號(hào)輸出密碼強(qiáng)度正則密碼強(qiáng)度正則,最少位,包括至少個(gè)大寫字母,個(gè)小寫字母,個(gè)數(shù)字,個(gè)特殊字符輸出整數(shù)正則正整數(shù)正則負(fù)整數(shù)正則整數(shù)正則輸出輸出輸出數(shù)字正則可以是整數(shù)也可以是浮點(diǎn) 1 用戶名正則 //用戶名正則,4到16位(字母,數(shù)字,下劃線,減號(hào)) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 tr...
摘要:方案簡單方案算法通過密碼構(gòu)成分析,結(jié)合權(quán)重分派,統(tǒng)計(jì)得出密碼強(qiáng)度得分。 簡言 用正則表達(dá)式做用戶密碼強(qiáng)度的通過性判定,過于簡單粗暴,不但用戶體驗(yàn)差,而且用戶帳號(hào)安全性也差。那么如何準(zhǔn)確評(píng)價(jià)用戶密碼的強(qiáng)度,保護(hù)用戶帳號(hào)安全呢?本文分析介紹了幾種基于規(guī)則評(píng)分的密碼強(qiáng)度檢測(cè)算法,并給出了相應(yīng)的演示程序。大家可以根據(jù)自己項(xiàng)目安全性需要,做最適合于自己的方案選擇。 showImg(http://...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書里的一些問題。將會(huì)討論安全的類型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類型檢測(cè)...
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...
摘要:收集在業(yè)務(wù)中經(jīng)常使用的正則表達(dá)式實(shí)例,方便以后進(jìn)行查找,減少工作量。校驗(yàn)手機(jī)號(hào)下面是國內(nèi)開頭的手機(jī)號(hào)正則表達(dá)式。提取網(wǎng)頁圖片假若你想提取網(wǎng)頁中所有圖片信息,可以利用下面的表達(dá)式。抽取注釋如果你需要移除中的注釋,可以使用如下的表達(dá)式。 收集在業(yè)務(wù)中經(jīng)常使用的正則表達(dá)式實(shí)例,方便以后進(jìn)行查找,減少工作量。 校驗(yàn)基本日期格式 校驗(yàn)密碼強(qiáng)度 校驗(yàn)中文 由數(shù)字、26個(gè)英文字母或下劃線組成的字符...
閱讀 2148·2023-04-26 03:06
閱讀 3600·2023-04-26 01:51
閱讀 2098·2021-11-24 09:38
閱讀 2470·2021-11-17 17:00
閱讀 2340·2021-09-28 09:36
閱讀 950·2021-09-24 09:47
閱讀 2592·2019-08-30 15:54
閱讀 1565·2019-08-30 15:44