最新密碼驗證正規表示式

懷特然後發表於2022-03-19

正規表示式驗證密碼功能在專案中經常被使用到,但是很多朋友還是不大會使用密碼正規表示式進行驗證,本文小編為大家整理了php密碼驗證正規表示式、python密碼強度正則,當然還有大家常用到的js正規表示式,希望大家喜歡。

剛開始複習一下 ,什麼是正規表示式?
在編寫處理字串的程式或網頁時,經常有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的程式碼。

php密碼驗證正規表示式(8位長度限制)

<?php 
//密碼驗證 
$password = "zongzi_Abc_oo13a2"; 
$n = preg_match_all("/^[a-zA-Z\d_]{8,}$/",$password,$array); 
//長度是8或更多 
var_dump($array); 
?>

python密碼驗證正規表示式

#encoding=utf-8
import re
def checklen(pwd):
 return len(pwd)>=8
def checkContainUpper(pwd):
 pattern = re.compile('[A-Z]+')
 match = pattern.findall(pwd)
 if match:
 return True
 else:
 return False
def checkContainNum(pwd):
 pattern = re.compile('[0-9]+')
 match = pattern.findall(pwd)
 if match:
 return True
 else:
 return False
def checkContainLower(pwd):
 pattern = re.compile('[a-z]+')
 match = pattern.findall(pwd)
 if match:
 return True
 else:
 return False
def checkSymbol(pwd):
 pattern = re.compile('([^a-z0-9A-Z])+')
 match = pattern.findall(pwd)
 if match:
 return True
 else:
 return False
def checkPassword(pwd):
 #判斷密碼長度是否合法
 lenOK=checklen(pwd)
 #判斷是否包含大寫字母
 upperOK=checkContainUpper(pwd)
 #判斷是否包含小寫字母
 lowerOK=checkContainLower(pwd)
 #判斷是否包含數字
 numOK=checkContainNum(pwd)
 #判斷是否包含符號
 symbolOK=checkSymbol(pwd)
 print(lenOK)
 print(upperOK)
 print(lowerOK)
 print(numOK)
 print(symbolOK)
 return (lenOK and upperOK and lowerOK and numOK and symbolOK)
def main():
 if checkPassword('Helloworld#123'):
 print('檢測通過')
 else:
 print('檢測未通過')
if __name__ == '__main__':
 main()

java密碼驗證正規表示式

/** 
* @ClassName: RexTest 
* @Description: TODO
* @author BMR
* @date 2016年3月28日 上午11:09:17 
*/
public class RexTest {
 
 /**
 * 正規表示式驗證密碼
 * @param input
 * @return
 */
 public static boolean rexCheckPassword(String input) {
 // 6-20 位,字母、數字、字元
 //String reg = "^([A-Z]|[a-z]|[0-9]|[`-=[];,./~!@#$%^*()_+}{:?]){6,20}$";
 String regStr = "^([A-Z]|[a-z]|[0-9]|[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]){6,20}$";
 return input.matches(regStr);
 }
 
 public static void main(String[] args){
 System.out.println("rexCheckPassword is: "+ rexCheckPassword("14`~!@#$%^&*(\\)+=|{}"));
 }

輸出結果:

rexCheckPassword is: true

網友提出的問題:

正規表示式校驗密碼
1、密碼必須由數字、字元、特殊字元三種中的兩種組成;
2、密碼長度不能少於8個字元;
滿足以上兩點,應該怎麼實現?

(?!^\\d+$)不能全是數字
(?!^[a-zA-Z]+$)不能全是字母
(?!^[_#@]+$)不能全是符號(這裡只列出了部分符號,可自己增加,有的符號可能需要轉義)
.{8,}長度不能少於8位
合起來就是
(?!^\\d+$)(?!^[a-zA-Z]+$)(?!^[_#@]+$).{8,}

完整的 js正規表示式

//強:字母+數字+特殊字元&nbsp;
&nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&*]+$)(?![\d!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
//中:字母+數字,字母+特殊字元,數字+特殊字元
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$
//弱:純數字,純字母,純特殊字元
^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$
//校驗是否全由數字組成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗登入名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串
function isRegisterUserName(s) 
{ 
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; 
if (!patrn.exec(s)) return false
return true
}
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗使用者姓名:只能輸入1-30個以字母開頭的字串
Javascript程式碼
function isTrueName(s) 
{ 
var patrn=/^[a-zA-Z]{1,30}$/; 
if (!patrn.exec(s)) return false
return true
} 
}} 
//校驗密碼:只能輸入6-20個字母、數字、下劃線 
function isPasswd(s) 
{ 
var patrn=/^(\w){6,20}$/; 
if (!patrn.exec(s)) return false
return true
} 
//校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-” 
function isTel(s) 
{ 
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; 
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; 
if (!patrn.exec(s)) return false
return true
} 
//校驗手機號碼:必須以數字開頭,除數字外,可含有“-” 
function isMobil(s) 
{ 
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; 
if (!patrn.exec(s)) return false
return true
} 
//校驗郵政編碼 
function isPostalCode(s) 
{ 
//var patrn=/^[a-zA-Z0-9]{3,12}$/; 
var patrn=/^[a-zA-Z0-9 ]{3,12}$/; 
if (!patrn.exec(s)) return false
return true
} 
//校驗搜尋關鍵字 
function isSearch(s) 
{ 
var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\] 
 [\]\{\}:;'\,.<>?]{0,19}$/; 
if (!patrn.exec(s)) return false
return true
} 
function isIP(s) //by zergling 
{ 
var patrn=/^[0-9.]{1,20}$/; 
if (!patrn.exec(s)) return false
return true
}

正規表示式

^\\d+$  //非負整數(正整數 + 0) 
^[0-9]*[1-9][0-9]*$  //正整數 
^((-\\d+)|(0+))$  //非正整數(負整數 + 0) 
^-[0-9]*[1-9][0-9]*$  //負整數 
^-?\\d+$    //整數 
^\\d+(  //非負浮點數(正浮點數 + 0) 
^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$  
//正浮點數 
^((-\\d+(  //非正浮點數(負浮點數 + 0) 
^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 
//負浮點數 
^(-?\\d+)(  //浮點數 
^[A-Za-z]+$  //由26個英文字母組成的字串 
^[A-Z]+$  //由26個英文字母的大寫組成的字串 
^[a-z]+$  //由26個英文字母的小寫組成的字串 
^[A-Za-z0-9]+$  //由數字和26個英文字母組成的字串 
^\\w+$  //由數字、26個英文字母或者下劃線組成的字串 
^[\\w-]+(    //email地址 
^[a-zA-z]+://(  //url 
^[A-Za-z0-9_]*$

匹配完整域名的正規表示式:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

想系統學習的朋友可以繼續閱讀: ,進一步加深對正規表示式的認識。

系列文章1:

以上就是本文的全部內容,希望對大家的學習有所幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015107/viewspace-2874049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章