JS正則:密碼強度8位以上,且包含大小寫字母、數字、半角英文符號


正則代碼

/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F])[\da-zA-Z\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]{8,}$/

本正則規則[1]

  • 包含數字

  • 包含大寫字母

  • 包含小寫字母

  • 包含英文標點符號

  • 至少8位以上

    以上條件必須全部滿足,則可以通過驗證

正則解讀:

/^$/規則

^匹配開始

$匹配結束

注意:在^字符集匹配規則內[],表示取反。

例如html標簽匹配 /<[^>]+>/可以匹配<h1>

/<[^>]+>/.test('<h1>')
//true

(?=.*\d) 規則

此正則參照MDN正則規則[2]中的x(?=y)的使用說明:

匹配'x'僅僅當'x'后面跟着'y'.這種叫做先行斷言。

例如,/Jack(?=Sprat)/會匹配到'Jack'僅當它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’僅當它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配結果的一部分。

[\da-zA-Z\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]

JS正則匹配半角英文符號[3]

測試

let reg = /^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F])[\da-zA-Z\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]{8,}$/;

reg.test('abcd6789&*(')
//false
reg.test('abcdD6789&*(')
//true
reg.test('abcd')
//false
reg.test('abcdABCD!@')
//false
reg.test('abcdABCD23456')
//false
reg.test('abcdABCD23456..')
//true

參考:


  1. JS正則表達式必須包含數字、字母、特殊字符 ↩︎

  2. MDN 正則規則 ↩︎

  3. JS正則匹配半角英文符號 ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM