为密码验证,允许创建的preg_match(!@#$%)(Create preg_match for

2019-06-26 21:42发布

我想创建一个preg_match功能来验证我的passowrds,但我不知道怎么写,以允许使用下列特殊字符: !@#$%

if(!preg_match(?????)$/', $password))

下面是我要工作到正则表达式我的密码规则:

  • 可以包含字母和数字
  • 必须至少包含1个数字和1个字母
  • 可以包含任意字符: !@#$%
  • 必须是8-12个字符

谢谢你,你可以提供任何帮助。

Answer 1:

我想,这应该是一个:

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 :)

顺便说一句,你可能想看看这个正则表达式教程



Answer 2:

preg_match('/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{8,20}$/',$password)
  • 至少一个小写字符
  • 至少一个大写字符
  • 至少有一位数
  • @ -_#$%^&+ =§的至少一个特殊的标志!?


Answer 3:

我喜欢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;
    }
}

最大值/最小值长度是默认的或可调整的,每个要求是默认,但可以被关断,并且我想支持任何符号,以便最后的要求是“任何不是上述类型之一”,而不是一个固定的设置符号。



Answer 4:

我已经制定了一个稍微复杂一些检查一个完整的正则表达式

/^(?=.*\d)(?=.*[A-Za-z])(?=.*[A-Z])(?=.*[a-z])(?=.*[ !#$%&'\(\) * +,-.\/[\\] ^ _`{|}~\"])[0-9A-Za-z !#$%&'\(\) * +,-.\/[\\] ^ _`{|}~\"]{8,50}$/

基本上我检查密码有1位,资本,低1个一个特殊字符。 我希望这可以帮助别人寻找一个正则表达式。



Answer 5:

我已经与我的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.'));
}
?>


Answer 6:

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.';
}


Answer 7:

另一种方法

我们先来看不同这一点,我相信用户可以使用所有的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";
}


Answer 8:

查找的字符类,正则表达式的基本特征。



Answer 9:

if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $password)) {
    echo 'the password does not meet the requirements!';
    }

在上面的语句..什么可能的口令从而存在?



文章来源: Create preg_match for password validation allowing (!@#$%)