我想驗證輸入的密碼如下使用preg_math功能我複雜性和長度的規則:驗證密碼如下的複雜性和長度規則
if (!preg_match('/(?=.*[A-Za-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])/', $password)) {
$errors[] = 'Password allows alpha-numerical sumbols and should contain number and letters between 6-24 symbols';
}
但是這個功能不能正常工作。因爲我的密碼應該包含至少一個數字(0-9)和一個字母(a-z)或符號(,), - 在6和20個符號之間。
如何寫我的正則表達式? 謝謝!
寫它作爲三個獨立的測試;一個測試長度,一個測試一個數字,一個測試字母和符號。比把它們塞進一個正則表達式要好得多。 – deceze
儘管檢查最小長度是明智的,但我會在沒有其他測試的情況下進行測試。他們只縮小搜索範圍,並且惹惱用戶,以便他們選擇較弱的密碼(如'password2014')。 – martinstoeckli