2013-10-28 105 views
-2

有人會向我解釋下面兩個函數之間的區別(如果有的話)是什麼?我一直在使用第一個密碼驗證密碼。已經做了一些小小的閱讀,現在我的頭在告訴我第二個函數完全一樣嗎?兩個preg_match函數,最新的差別

preg_match("/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,}$/", $string); 

改寫爲:

preg_match("/[a-zA-Z0-9]{6,}/", $string); 

任何說明理解。

回答

2

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,}$/ - 6個字符,含有至少一個數字,大寫和小寫

/[a-zA-Z0-9]{6,}/ - 6個或更多的字符,它必須是大寫,小寫或數字

  • 一個子aA1___僅匹配第一個
  • 111111僅匹配第二個

注意執行更強的規則可能會導致較弱的密碼 - xkcd

+0

第二的preg_match與回報與其他人物太真實了。例如'4Dd $'將會返回true – Adam

+1

第二場比賽也是'&é「12abAB *****'因爲沒有錨點 – Toto

+0

歡呼傢伙,只是一個快速筆記雖然 」並且請在驗證密碼時,只執行最小長度「我只強制執行最小長度 和」aA1___「與 – Adam