亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

密碼強(qiáng)度的正則表達(dá)式(JavaScript)總結(jié)

Carl / 1723人閱讀

摘要:簡(jiǎn)言本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡(jiǎn)單,一個(gè)更復(fù)雜和安全。要寫(xiě)出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來(lái)表示元素重復(fù)出現(xiàn)的次數(shù)。你可以根據(jù)項(xiàng)目需要,自己調(diào)整上述正則表達(dá)式。

簡(jiǎn)言

本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡(jiǎn)單,一個(gè)更復(fù)雜和安全。并分別給出了兩個(gè)方案的解析和測(cè)試程序。一般大家可以根據(jù)自己的項(xiàng)目的實(shí)際需要,自行定義自己的密碼正則約定。

前言

用戶(hù)注冊(cè)時(shí),都會(huì)用到密碼正則校驗(yàn)。要寫(xiě)出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。

方案1 (簡(jiǎn)單)

假設(shè)密碼驗(yàn)證做如下規(guī)則定義:

最短6位,最長(zhǎng)16位 {6,16}

可以包含小寫(xiě)大母 [a-z] 和大寫(xiě)字母 [A-Z]

可以包含數(shù)字 [0-9]

可以包含下劃線 [ _ ] 和減號(hào) [ - ]

根據(jù)以上規(guī)則,很容易給出正則字面量定義如下:

var pattern = /^[w_-]{6,16}$/;
方案1分析 字面量 / /

正則表達(dá)式的字面量定義為包含在一對(duì)斜杠(/)之間的字符,例如:

var pattern = /s$/;

上述字面量匹配所有以字母“s”結(jié)尾的字符串。

字符類(lèi) [ ]

將字符放進(jìn)方括號(hào)內(nèi)就組成了字符類(lèi)。一個(gè)字符類(lèi)可以匹配它所包含的任意字符。因此,正則表達(dá)式/[abc]/就和字母“a”,“b”,“c”中的任意一個(gè)都匹配。

字符類(lèi)可以使用連字符來(lái)表示字符范圍。要匹配拉丁小寫(xiě)字母可以使用/[a-z]/

字符類(lèi) w

字符類(lèi) w 匹配任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9]。

[w_-]表示匹配任意的拉丁大小寫(xiě)字母,數(shù)字再加上下劃線和減號(hào)。

重復(fù) {}

在正則表達(dá)式中用{ }來(lái)表示元素重復(fù)出現(xiàn)的次數(shù)。

{n,m} 匹配前一項(xiàng)至少n次,但不能超過(guò)m次

{n,} 匹配前一項(xiàng)n次或更多次

{n} 匹配前一項(xiàng)n次

[w_-]{6,16} 表示匹配任意的拉丁大小寫(xiě)字母,數(shù)字再加上下劃線和減號(hào)出現(xiàn)最少6次,最多16次。

匹配位置

^ 匹配字符串的開(kāi)頭,在多行檢索中,匹配一行的開(kāi)頭

$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾

/^w/ 匹配以大小寫(xiě)字母或數(shù)字開(kāi)頭的字符串。

方案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ì)密碼做了簡(jiǎn)單的限定,不能保證密碼的強(qiáng)度和帳號(hào)安全。

方案2 (安全)

假設(shè)密碼驗(yàn)證做如下規(guī)則定義:

最短6位,最長(zhǎng)16位 {6,16}

必須包含1個(gè)數(shù)字

必須包含2個(gè)小寫(xiě)字母

必須包含2個(gè)大寫(xiě)字母

必須包含1個(gè)特殊字符

根據(jù)以上規(guī)則,很容易給出正則字面量定義如下:

var pattern = /^.*(?=.{6,16})(?=.*d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?()]).*$/;
方案2分析 字符類(lèi) .

字符類(lèi) . 表示除換行符和其他Unicode行終止符之外的任意字符。

正向先行斷言 (?= )

在符號(hào)“(?=” 和 “)” 之間加入一個(gè)表達(dá)式,它就是一個(gè)先行斷言,用以說(shuō)明圓括號(hào)內(nèi)的表達(dá)式必須正確匹配。比如:/Java(?=:)/ 只能匹配Java且后面有冒號(hào)的。

(?=.*[!@#$%^&*?()])

該先行斷言表示,必須包括一個(gè)特殊字符。上述表達(dá)式中的10個(gè)特殊字符為鍵盤(pán)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://www.ezyhdfw.cn/yun/93286.html

相關(guān)文章

  • 【收藏】15個(gè)常用javaScript正則達(dá)式

    摘要:用戶(hù)名正則用戶(hù)名正則,到位字母,數(shù)字,下劃線,減號(hào)輸出密碼強(qiáng)度正則密碼強(qiáng)度正則,最少位,包括至少個(gè)大寫(xiě)字母,個(gè)小寫(xiě)字母,個(gè)數(shù)字,個(gè)特殊字符輸出整數(shù)正則正整數(shù)正則負(fù)整數(shù)正則整數(shù)正則輸出輸出輸出數(shù)字正則可以是整數(shù)也可以是浮點(diǎn) 1 用戶(hù)名正則 //用戶(hù)名正則,4到16位(字母,數(shù)字,下劃線,減號(hào)) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 tr...

    MarvinZhang 評(píng)論0 收藏0
  • 基于規(guī)則評(píng)分密碼強(qiáng)度檢測(cè)算法分析及實(shí)現(xiàn)(JavaScript)

    摘要:方案簡(jiǎn)單方案算法通過(guò)密碼構(gòu)成分析,結(jié)合權(quán)重分派,統(tǒng)計(jì)得出密碼強(qiáng)度得分。 簡(jiǎn)言 用正則表達(dá)式做用戶(hù)密碼強(qiáng)度的通過(guò)性判定,過(guò)于簡(jiǎn)單粗暴,不但用戶(hù)體驗(yàn)差,而且用戶(hù)帳號(hào)安全性也差。那么如何準(zhǔn)確評(píng)價(jià)用戶(hù)密碼的強(qiáng)度,保護(hù)用戶(hù)帳號(hào)安全呢?本文分析介紹了幾種基于規(guī)則評(píng)分的密碼強(qiáng)度檢測(cè)算法,并給出了相應(yīng)的演示程序。大家可以根據(jù)自己項(xiàng)目安全性需要,做最適合于自己的方案選擇。 showImg(http://...

    ernest.wang 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類(lèi)型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類(lèi)型檢測(cè)...

    yibinnn 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書(shū)問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...

    bang590 評(píng)論0 收藏0
  • 正則達(dá)式實(shí)例

    摘要:收集在業(yè)務(wù)中經(jīng)常使用的正則表達(dá)式實(shí)例,方便以后進(jìn)行查找,減少工作量。校驗(yàn)手機(jī)號(hào)下面是國(guó)內(nèi)開(kāi)頭的手機(jī)號(hào)正則表達(dá)式。提取網(wǎng)頁(yè)圖片假若你想提取網(wǎng)頁(yè)中所有圖片信息,可以利用下面的表達(dá)式。抽取注釋如果你需要移除中的注釋?zhuān)梢允褂萌缦碌谋磉_(dá)式。 收集在業(yè)務(wù)中經(jīng)常使用的正則表達(dá)式實(shí)例,方便以后進(jìn)行查找,減少工作量。 校驗(yàn)基本日期格式 校驗(yàn)密碼強(qiáng)度 校驗(yàn)中文 由數(shù)字、26個(gè)英文字母或下劃線組成的字符...

    zhoutk 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Carl

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<