我想创建一个preg_match
功能来验证我的passowrds,但我不知道怎么写,以允许使用下列特殊字符: !@#$%
if(!preg_match(?????)$/', $password))
下面是我要工作到正则表达式我的密码规则:
- 可以包含字母和数字
- 必须至少包含1个数字和1个字母
- 可以包含任意字符:
!@#$%
- 必须是8-12个字符
谢谢你,你可以提供任何帮助。
我想创建一个preg_match
功能来验证我的passowrds,但我不知道怎么写,以允许使用下列特殊字符: !@#$%
if(!preg_match(?????)$/', $password))
下面是我要工作到正则表达式我的密码规则:
!@#$%
谢谢你,你可以提供任何帮助。
我想,这应该是一个:
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $password)) {
echo 'the password does not meet the requirements!';
}
开始之间- > ^
而结束- > $
字符串的,必须有至少一个数- > (?=.*\d)
和至少一个字母- > (?=.*[A-Za-z])
并且它必须是数字,字母或以下之一:!@#$% - > [0-9A-Za-z!@#$%]
并且存在必须是8-12个字符- > {8,12}
作为user557846评论你的问题,我也建议你,让更多的人物,我通常(如果我使用最多)至少需要50 :)
顺便说一句,你可能想看看这个正则表达式教程
preg_match('/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{8,20}$/',$password)
我喜欢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;
}
}
最大值/最小值长度是默认的或可调整的,每个要求是默认,但可以被关断,并且我想支持任何符号,以便最后的要求是“任何不是上述类型之一”,而不是一个固定的设置符号。
我已经制定了一个稍微复杂一些检查一个完整的正则表达式
/^(?=.*\d)(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[a-z])(?=.*[ !#$%&'\(\) * +,-.\/[\\] ^ _`{|}~\"])[0-9A-Za-z !#$%&'\(\) * +,-.\/[\\] ^ _`{|}~\"]{8,50}$/
基本上我检查密码有1位,资本,低1个一个特殊字符。 我希望这可以帮助别人寻找一个正则表达式。
我已经与我的Drupal自定义表单做到了这一点hook_form_validate
这里的密码应该由字母,数字的6个字符和至少一个特殊字符。
<?
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$%])[0-9A-Za-z!@#$%]{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.'));
}
?>
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$%])[0-9A-Za-z!@#$%]
{6,15}$/',($_POST['password']))) {
$message='Password must contain 6 characters of letters, numbers and
at least one special character.';
}
我们先来看不同这一点,我相信用户可以使用所有的ASCII有效字符(32 < ascii_code < 127)
的密码,并创建了一个检查所有的都是在ASCII表中的字符的功能!
function check($pass, $i = 0){
if(strlen($pass) > $i)
return (0rd(pass[$i]) > 32 and 0rd(pass[$i]) < 127) and check($pass, $i + 1);
}
if(!check($_POST["password"])){
echo "password is wrong";
}
查找的字符类,正则表达式的基本特征。
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $password)) {
echo 'the password does not meet the requirements!';
}
在上面的语句..什么可能的口令从而存在?