密碼強度的正則表達式兩種方案JS總結篇

 更新時間:2019-04-17 21:43:14   作者:佚名   我要評論(0)

本文給出了兩個密碼強度的正則表達式方案,一個簡單,一個更復雜和安全。并分別給出了兩個方案的解析和測試程序。一般大家可以根據自己的項目的實際需要,自行

本文給出了兩個密碼強度的正則表達式方案,一個簡單,一個更復雜和安全。并分別給出了兩個方案的解析和測試程序。一般大家可以根據自己的項目的實際需要,自行定義自己的密碼正則約定。

 

前言

用戶注冊時,都會用到密碼正則校驗。要寫出正確的正則表達式,先要定義表達式規則。

方案1 (簡單)

假設密碼驗證做如下規則定義:

  • 最短6位,最長16位 {6,16}
  • 可以包含小寫大母 [a-z] 和大寫字母 [A-Z]
  • 可以包含數字 [0-9]
  • 可以包含下劃線 [ _ ] 和減號 [ - ]

根據以上規則,很容易給出正則字面量定義如下:

var pattern = /^[\w_-]{6,16}$/;

方案1分析

字面量 / /

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

var pattern = /s$/;

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

字符類 [ ]

將字符放進方括號內就組成了字符類。一個字符類可以匹配它所包含的任意字符。因此,正則表達式 /[abc]/ 就和字母“a”,“b”,“c”中的任意一個都匹配。

字符類可以使用連字符來表示字符范圍。要匹配拉丁小寫字母可以使用 /[a-z]/ 。

字符類 \w

字符類 \w 匹配任何ASCII字符組成的單詞,等價于[a-zA-Z0-9]。

[\w_-] 表示匹配任意的拉丁大小寫字母,數字再加上下劃線和減號。

重復 {}

在正則表達式中用{ }來表示元素重復出現的次數。

  • {n,m} 匹配前一項至少n次,但不能超過m次
  • {n,} 匹配前一項n次或更多次
  • {n} 匹配前一項n次

[\w_-]{6,16} 表示匹配任意的拉丁大小寫字母,數字再加上下劃線和減號出現最少6次,最多16次。

匹配位置

^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字符串的結尾,在多行檢索中,匹配一行的結尾
/^\w/ 匹配以大小寫字母或數字開頭的字符串。

方案1測試

給出測試結果如下:

var pattern = /^[\w_-]{6,16}$/;
pattern.test('123456') = true;
pattern.test('-ifat33') = true;
pattern.test('42du') = false;
pattern.test('du42du42du42du421') = false;
pattern.test('[email protected]') = false;

查看源碼

根據測試結果可以看出,方案1只是對密碼做了簡單的限定,不能保證密碼的強度和帳號安全。

方案2 (安全)

假設密碼驗證做如下規則定義:

  • 最短6位,最長16位 {6,16}
  • 必須包含1個數字
  • 必須包含2個小寫字母
  • 必須包含2個大寫字母
  • 必須包含1個特殊字符

根據以上規則,很容易給出正則字面量定義如下:

var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[[email protected]#$%^&*?\(\)]).*$/;

方案2分析

字符類 .

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

正向先行斷言 (?= )

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

(?=.*[[email protected]#$%^&*?\(\)])

該先行斷言表示,必須包括一個特殊字符。上述表達式中的10個特殊字符為鍵盤1,2...0的上檔鍵字符,也可以添加別的特殊字符。注意:如果添加字符是正則表達式中具有特殊含義的,需要在符號前加反斜線(\)轉義。

方案2測試

給出測試結果如下:

var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[[email protected]#$%^&*?\(\)]).*$/;
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;

總結

以上所述是小編給大家介紹的密碼強度的正則表達式兩種方案JS總結篇,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:

  • js正則表達式 匹配兩個特定字符間的內容示例
  • JS使用正則表達式獲取小括號、中括號及花括號內容的方法示例
  • JavaScript email郵箱/郵件地址的正則表達式及分析
  • JavaScript+Regex 身份證號碼的正則表達式及驗證詳解
  • 詳解js正則表達式驗證時間格式xxxx-xx-xx形式
  • JS正則表達式替換url參數的方法
  • 80%應聘者都不及格的JS面試題
  • Javascript前端經典的面試題及答案
  • AngularJS 面試題集錦
  • js前端面試題及答案整理(一)
  • 一道常被人輕視的web前端常見面試題(JS)
  • 13道關于JavaScript正則表達式的面試題

相關文章

  • 密碼強度的正則表達式兩種方案JS總結篇

    密碼強度的正則表達式兩種方案JS總結篇

    本文給出了兩個密碼強度的正則表達式方案,一個簡單,一個更復雜和安全。并分別給出了兩個方案的解析和測試程序。一般大家可以根據自己的項目的實際需要,自行
    2019-04-17
  • VS+opencv實現鼠標移動圖片

    VS+opencv實現鼠標移動圖片

    基于控制臺應用程序+opencv,實現點擊鼠標左鍵,可以拖動圖片以顯示感興趣區域 #include <opencv2/highgui/highgui.hpp> //#include <iostream> //using
    2019-04-17
  • vue使用el-upload上傳文件及Feign服務間傳遞文件的方法

    vue使用el-upload上傳文件及Feign服務間傳遞文件的方法

    一、前端代碼 <el-upload class="step_content" drag action="string" ref="upload" :multiple="false" :http-req
    2019-04-17
  • 詳解Spring的核心機制依賴注入

    詳解Spring的核心機制依賴注入

    詳解Spring的核心機制依賴注入 對于一般的Java項目,他們都或多或少有一種依賴型的關系,也就是由一些互相協作的對象構成的。Spring把這種互相協作的關系稱為
    2019-04-17
  • JS正則表達式獲取指定字符之后指定字符之前的字符串(推薦)

    JS正則表達式獲取指定字符之后指定字符之前的字符串(推薦)

    一個常見的場景,獲。簶撕灡尘皥D片鏈接: 如字符串:var bgImg = "url (\"https://img30.360buyimg.com/sku/jfs/t26203/262/100869187/204098/1d1479e9/5b8
    2019-04-17
  • JSP狀態管理的簡單介紹

    JSP狀態管理的簡單介紹

    JSP狀態管理的簡單介紹 一 http協議的無狀態性 無狀態性是指:當瀏覽器發送請求給服務器時,服務器響應客戶端請求。 但是當同一個瀏覽器再次發送請求給
    2019-04-17
  • Spring獲取ApplicationContext對象工具類的實現方法

    Spring獲取ApplicationContext對象工具類的實現方法

    Spring獲取ApplicationContext對象工具類的實現方法 (1)實現的工具類: package com.util; import org.springframework.context.ApplicationConte
    2019-04-17
  • Vue渲染過程淺析

    Vue渲染過程淺析

    Vue 推薦在絕大多數情況下使用 template 來創建你的 HTML。但是模板畢竟是模板,不是真實的dom節點。從模板到真實dom節點還需要經過一些步驟 把模板編譯為
    2019-04-17
  • 使用webpack搭建vue項目實現腳手架功能

    使用webpack搭建vue項目實現腳手架功能

    本文基于node.js開發環境,安裝完node之后新建項目,通過webpack配置,實現vue-cli腳手架功能 對于剛剛接觸編程的人來說,最難的可能并不是學習一種新語法或者
    2019-04-17
  • JavaScript+Regex 身份證號碼的正則表達式及驗證詳解

    JavaScript+Regex 身份證號碼的正則表達式及驗證詳解

    簡言 在做用戶實名驗證時,常會用到身份證號碼的正則表達式及校驗方案。本文列舉了兩種驗證方案,大家可以根據自己的項目實際情況,選擇適合的方案。 身份證
    2019-04-17

最新評論

双色球基本走势图200