php - 为允许 (!@#$%) 的密码验证创建 preg_match

标签 php regex passwords preg-match

我想创建一个 preg_match 函数来验证我的密码,但我不确定如何编写它以允许使用以下特殊字符:!@#$ %.

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

这是我想在正则表达式中使用的密码规则:

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

感谢您提供的任何帮助。

最佳答案

我认为这应该是这样的:

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

顺便说一句,你可能想看看this regex tutorial

关于php - 为允许 (!@#$%) 的密码验证创建 preg_match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873990/

相关文章:

php - 循环数组时返回奇怪的值

laravel 5.2 - 为用户创建密码

带引号的 PHP 执行

unix - nginx 错误连接到 php5-fpm.sock 失败 (13 : Permission denied)

php - 导入时出现 SQL 语法错误

javascript - 不允许双下划线的正则表达式,除非它在单词的末尾后跟 'x' 符号

Javascript 解析带参数的嵌套字符串函数

PHP 正则表达式在斜杠和减法之间匹配

Emacs GPG 密码超时

macos - 如何在 Mac OS X 上为 zip 文件提供密码