我想創建一個preg_match
函數來驗證我的密碼,但我不確定如何編寫它以允許使用以下特殊字符:[email protected]#$%
。
if(!preg_match(?????)$/', $password))
下面是我要工作到正則表達式我的密碼規則:
- 可能含有字母和數字
- 必須至少包含1個數字和1個字母
- 可以包含任何的這些字符:
[email protected]#$%
- 必須是8-12個字符
感謝您提供任何幫助。
我想創建一個preg_match
函數來驗證我的密碼,但我不確定如何編寫它以允許使用以下特殊字符:[email protected]#$%
。
if(!preg_match(?????)$/', $password))
下面是我要工作到正則表達式我的密碼規則:
[email protected]#$%
感謝您提供任何幫助。
我想這應該看起來像:
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $password)) {
echo 'the password does not meet the requirements!';
}
開始之間 - >^
而結束 - >$
字符串的 必須有至少一個數字 - >(?=.*\d)
和至少一個字母 - >(?=.*[A-Za-z])
它必須是數字,字母或以下其中一個:!@#$% - >[[email protected]#$%]
還有必須在8-12個字符 - >{8,12}
至於user557846評論你的問題,我也建議你,讓更多的人物,我通常(如果我使用最多)至少需要50 :)
順便說一句,你可能想看看this regex tutorial
謝謝!這對我有用。並感謝你解釋它的每一部分。這真的幫助我更好地理解這一點。我還探討了你建議的教程,這看起來像是一個很好的資源,下次我正在處理正則表達式。我製作了最多50個字符。 – 2012-08-09 00:33:08
查找字符類,正則表達式的基本功能。
謝謝你指引我朝着正確的方向。 – 2012-08-09 00:34:00
這是邊界不是答案,特別是比較接受的答案。也許你可以擴展它,而不是隻是告訴別人去尋找某些東西。謝謝。 – Kev 2012-08-09 21:42:15
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $password)) {
echo 'the password does not meet the requirements!';
}
在上面的語句..什麼可能的口令從而存在?
請幫助我..因爲我輸入了不同的字符但它不存在..「密碼不符合要求! – christine 2014-03-17 06:01:06
if(!preg_match('/ ^(?=。* \ d)(?=。* [0-9A-Za-z!@#$%] {8,12} $ /',$ password)){ echo'密碼不符合要求!'; } – christine 2014-03-17 07:24:01
在上面的語句...是任何機構可以給我一個適合我的「preg_match密碼」的密碼..因爲我輸入dffernt密碼組合,但它不能提交.. – christine 2014-03-17 07:27:23
preg_match('/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[[email protected]#\-_$%^&+=§!\?]{8,20}$/',$password)
托馬斯的答案比r3bel的更好地解釋。 – Alreadytakenindeed 2017-12-17 02:23:04
我已經用我的drupal自定義表單在hook_form_validate
這裏做了這個密碼應該是6個字母的字母,數字和至少一個特殊字符。
<?
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[[email protected]#$%])[[email protected]#$%]{6,15}$/', $form_state['values']['pass'])) {
form_set_error('pass', t('Password must contain 6 characters of letters, numbers and at least one special character.'));
}
?>
我已經制定了一個稍微複雜一些檢查
/^(?=.*\d)(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[a-z])(?=.*[ !#$%&'\(\) * +,-.\/[\\]^_`{|}~\"])[0-9A-Za-z !#$%&'\(\) * +,-.\/[\\]^_`{|}~\"]{8,50}$/
基本上我檢查密碼有1位,資本,1個和特殊字符,一個完整的正則表達式。我希望這可以幫助尋找正則表達式的人。
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[[email protected]#$%])[[email protected]#$%]
{6,15}$/',($_POST['password']))) {
$message='Password must contain 6 characters of letters, numbers and
at least one special character.';
}
你應該更清楚。 – 2017-01-11 07:44:40
我喜歡r3bel的答案,所以我有一個發揮與它結束了以下內容作爲密碼檢查功能:
function password_strength_check($password, $min_len = 8, $max_len = 70, $req_digit = 1, $req_lower = 1, $req_upper = 1, $req_symbol = 1) {
// Build regex string depending on requirements for the password
$regex = '/^';
if ($req_digit == 1) { $regex .= '(?=.*\d)'; } // Match at least 1 digit
if ($req_lower == 1) { $regex .= '(?=.*[a-z])'; } // Match at least 1 lowercase letter
if ($req_upper == 1) { $regex .= '(?=.*[A-Z])'; } // Match at least 1 uppercase letter
if ($req_symbol == 1) { $regex .= '(?=.*[^a-zA-Z\d])'; } // Match at least 1 character that is none of the above
$regex .= '.{' . $min_len . ',' . $max_len . '}$/';
if(preg_match($regex, $password)) {
return TRUE;
} else {
return FALSE;
}
}
最大/最小長度是默認或可調,每一個需求是默認開啓的,但可以關閉,並且我想支持任何符號,所以最後的要求是「任何不屬於上述類型的東西」,而不是固定的一組符號。
請考慮允許更長的密碼,我更喜歡我的是20 +字符長,它不會傷害你,讓這個。我不明白具有最大長度的網站 - 您將它們存儲爲散列,那麼問題是什麼? – 2012-08-08 22:24:27
@Dragon我把最多可以增加到50個字符。這是一個簡單的網站,我想我只是想讓8-12個字符讓人們更容易記住,而不太可能需要重置密碼。但正如你所說,密碼被加密後,這真的不是什麼大問題。 – 2012-08-09 00:36:40
我讓lastpass記住我的所有密碼:-) – 2012-08-09 02:34:20