用于验证密码的PHP正则表达式

时间:2013-07-11 18:42:58

标签: php regex

我是PHP的新手。我需要帮助编写一个验证密码的正则表达式。密码长度必须至少为8个字符,以字母开头,以数字结尾,并且不区分大小写。第一个和最后一个之间的字符可以是数字,下划线或符号。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

/^[A-Za-z][0-9[:punct:]]{6,}[0-9]$/应该有效

这说:

  • 第一个字符必须是字母
  • 中间字符必须是数字或符号(包括下划线)
  • 必须至少有6个中间字符
  • 最后一个字符必须是数字

答案 1 :(得分:0)

查看manual中的preg_match() PHP函数。

快速示例:

<?php
// Check if the string is at least 8 chars long
if (strlen($password) < 8)
{
   // Password is too short
}


// Make the password "case insensitive"
$password = strtolower($password);


// Create the validation regex
$regex = '/^[a-z][\w!@#$%]+\d$/i';

// Validate the password
if (preg_match($regex, $password))
{
   // Password is valid
}
else
{
   // ... not valid
}

Regex Explanation:  
   ^           => begin of string
   [a-z]       => first character must be a letter
   [\w!@#$%]+  => chars in between can be digit, underscore, or symbol
   \d          => must end with a digit
   $           => end of string
   /i          => case insesitive