密碼強度正則表達式 – 必須包含大寫字母,小寫字母和數字,至少8個字符等 發表於 2017年09月8日 by 天涯孤雁 被瀏覽 3,953 次 分享到: 2 小編推薦:掘金是一個高質量的技術社區,從 ECMAScript 6 到 Vue.js,性能優化到開源類庫,讓你不錯過前端開發的每個技術乾貨。各大應用市場搜索「掘金」便可下載APP,技術乾貨盡在掌握.. 須要一個密碼強度正則表達式在用戶註冊時校驗用戶密碼強度:密碼至少8個字符,包括1個大寫字母,1個小寫字母和1個數字或特殊字符,例如#,?,!。網上搜索了一些解決方案分享給你們。 方案一 至少8-16個字符,至少1個大寫字母,1個小寫字母和1個數字,其餘能夠是任意字符: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/ 或者: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/ 其中 [\s\S] 中的\s空白符,\S非空白符,因此[\s\S]是任意字符。也能夠用 [\d\D]、[\w\W]來表示。 至少8個字符,至少1個大寫字母,1個小寫字母和1個數字,不能包含特殊字符(非數字字母): ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$ 至少8個字符,至少1個字母,1個數字和1個特殊字符: ^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$ 至少8個字符,至少1個大寫字母,1個小寫字母和1個數字: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$ 至少8個字符,至少1個大寫字母,1個小寫字母,1個數字和1個特殊字符: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,} 最少8個最多十個字符,至少1個大寫字母,1個小寫字母,1個數字和1個特殊字符: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10} 方案二 還有,你可使用這個正則表達式: ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$ 這個正則表達式將強制執行這些規則: 至少1個大寫字母English letter,(?=.*?[A-Z]) 至少1個小寫英文字母,(?=.*?[a-z]) 至少1位數字,(?=.*?[0-9]) 至少有1個特殊字符,(?=.*?[#?!@$%^&*-]) 最小8個長度.{8,} 方案三 正則表達式沒有AND運算符,因此編寫正則表達式與有效密碼匹配是很是困難的,當有效性被某些東西和其餘東西等定義時… 可是,正則表達式確實有1個OR運算符,因此只需應用DeMorgan的定理,並編寫1個與無效密碼相匹配的正則表達式: 任何少於8個字符或任何沒有數字或任何沒有大寫字母或任何沒有小寫字母或任何沒有特殊字符的任何東西。 因此:^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$,若是有什麼匹配的話,這是1個無效的密碼。 方案四 因爲特殊字符僅限於鍵盤中的特殊字符,所以可用於任何特殊字符: ^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$ 這個正則表達式將強制執行這些規則: – 至少1個大寫英文字母 – 至少1個小寫英文字母 – 至少1位數字 – 至少1個特殊字符 – 最少8個長度 方案五 根據個人狀況,我遇到了最受歡迎的答案。例如,個人驗證失敗,其中包含;或[等字符。我對 white-listing 個人特殊字符不感興趣,因此我用[^\w\s]做爲測試 – 簡單地把非字符(包括數字)和非空格字符放在一塊兒。總而言之,這是對我有用的 至少8字符 至少1數字字符 至少1小寫字母 至少1大寫字母 至少1特殊字符 /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/ 簡單演示涵蓋各類狀況 方案六 導入JavaScript文件jquery.validate.min.js。 您可使用此方法: JavaScript 代碼: $.validator.addMethod("pwcheck", function (value) { return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value) }); 至少1個大寫英文字母 至少1個小寫英文字母 至少1位數字 至少1個特殊字符 方案七 嘗試這個: – 最少6個字符 – 至少有1個大寫字符 – 至少1個小寫字符 – 至少1個特殊字符 表達式: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/ 可選特殊字符: 至少1個特殊字符 至少1個數字 特殊字符是可選的 最少6個字符,最多16個字符 表達式: /^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/ 若是不須要最小和最大條件,則刪除.{6, 16} – 6是最小字符數限制 – 20是最大字符限制 – ?=表示匹配表達式
//不能出現兩個數字挨在一塊。 public static boolean isRepeatNumber(String str){ //String regex = "^.*[([0-9][0-9]){1,}].*$"; String regex = "^.*([0-9][0-9]).*$"; return match(regex,str); }