在php上使用正则表达式验证密码

时间:2014-05-21 08:20:33

标签: php regex

我不清楚php的正则表达式。我想用以下规则验证密码:

  • 密码至少包含8个字符
  • 密码至少包含1个字母
  • 密码至少包含1位数字

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

public function checkPassword($pwd, &$errors) {
$errors_init = $errors;

   if (strlen($pwd) < 8) {
      $errors[] = "Password too short!";
   }

   if (!preg_match("#[0-9]+#", $pwd)) {
      $errors[] = "Password must include at least one number!";
   }

   if (!preg_match("#[a-zA-Z]+#", $pwd)) {
      $errors[] = "Password must include at least one letter!";
   }     

   return ($errors == $errors_init);
}

来源:https://stackoverflow.com/a/10753064/1676962

答案 1 :(得分:2)

您可以使用此正则表达式:

preg_match('/(^(?=.*\d)(?=.*[a-z]).{8,}$)/i', $password);

详细信息:

  • (?=.*\d):至少一位数
  • (?=.*[a-z]):至少一封信
  • .{8,}:8个或更多字符
  • /i:不区分大小写的正则表达式

Regular expression visualization

答案 2 :(得分:0)

这是正则表达式:

^((?=.*\w)|(?=.*\d])).{8,}$

演示:http://regex101.com/r/iU4mH1