php - 使用正则表达式的安全密码

标签 php regex passwords character

我对正则表达式很陌生,我做了一个研究并有了一点理解 我需要的是符合这些规范的密码

  1. 任何字母字符(至少一个)
  2. 任何数字字符(至少一个)
  3. 没有空格
  4. 特殊字符(0个或更多)

我得到的是这个

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)(?!\S)$

匹配 1、2、3 规范但不匹配 4 我在 4 上尝试了不同的东西,但我失败了

谁能帮帮我?

最佳答案

你们很亲近。这似乎可以解决您的问题:

preg_match("/^(?=.*[0-9])(?=.*[a-z])(\S+)$/i", $password)

我做了两个改变。

  1. 只需使用 i 修饰符(不区分大小写的匹配)来缩短一点。这允许删除 A-Z`。
  2. 我认为 (?!\S) 在这里并没有真正的帮助。相反,您可以简单地让您的实际匹配仅包含非空格字符(\S+)。这也将立即允许您的密码中包含特殊字符(实际上是除空格之外的任何字符)。

如果您只想允许特定的一组特殊字符,请将 \S 替换为包含字母、数字和您要允许的所有字符的字符类。顺便说一句,如果你想确保你的密码有一定的最小长度,你可以将 + 更改为 {8,} 例如。

关于php - 使用正则表达式的安全密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876014/

相关文章:

php - 修剪字符串中的多个换行符和多个空格?

regex - 如何在命令行管道中匹配 IPv6 地址

javascript - 如何使用 greasemonkey 安全地存储密码?

PHP 脚本与 MySQL 查询超时

PHP:在数组中保留所需的值

php - PHP 中的 print_r() 和 mail() 输出不同的东西,为什么?

regex - PowerShell正则表达式在换行符附近不匹配

Javascript 正则表达式与非捕获组作为两种选择

asp.net - 如何在asp.net成员(member)中手动更改密码?

shell - 在shell脚本中使用SCP时如何响应密码提示?