我想创建一个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