這次帶給大家驗證使用者設定的密碼強度正規表示式,驗證使用者設定密碼強度正規表示式的注意事項有哪些,下面就是實戰案例,一起來看一下。
本文給了兩個密碼強度的正規表示式方案,一個簡單,一個更複雜和安全。並分別給出了兩個方案的解析和測試程序。一般大家可以依照自己的項目的實際需要,自行定義自己的密碼正規約定。
前言
#使用者註冊時,都會用到密碼正規校驗。要寫出正確的正規表示式,先要定義表達式規則。
方案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('42du42@') = false;
查看原始碼
#根據測試結果可以看出,方案1只是對密碼做了簡單的限定,不能保證密碼的強度和帳號安全。
方案2 (安全性)
假設密碼驗證做如下規則定義:
最短6位,最長16位{6,16}
必須包含1個數字
-
必須包含2個小寫字母
必須包含2個大寫字母
必須包含1個特殊字元
根據上述規則,很容易給出正規字面量定義如下:
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/;
方案2分析
字符类 .
字符类 . 表示除换行符和其他Unicode行终止符之外的任意字符。
正向先行断言 (?= )
在符号“(?=” 和 “)” 之间加入一个表达式,它就是一个先行断言,用以说明圆括号内的表达式必须正确匹配。比如: /Java(?=\:)/ 只能匹配Java且后面有冒号的。
(?=.*[!@#$%^&*?\(\)])
该先行断言表示,必须包括一个特殊字符。上述表达式中的10个特殊字符为键盘1,2...0的上档键字符,也可以添加别的特殊字符。注意:如果添加字符是正则表达式中具有特殊含义的,需要在符号前加反斜线(\)转义。
方案2测试
给出测试结果如下:
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;
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是驗證使用者設定的密碼強度正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具