gpt4 book ai didi

php - 具有四个条件的密码正则表达式

转载 作者:行者123 更新时间:2023-12-03 23:11:52 25 4
gpt4 key购买 nike

我正在尝试用 PHP 编写正则表达式以确保密码符合以下条件:

  • 长度至少应为 8 个字符
  • 至少应包含一个特殊字符
  • 它应该至少包含一个大写字母。

我写了下面的表达式:

$pattern=([a-zA-Z\W+0-9]{8,})

但是,它似乎没有按照列出的标准工作。我可以再找一双眼睛来帮助我吗?

最佳答案

您的正则表达式 - ([a-zA-Z\W+0-9]{8,}) - 实际上在至少 8 个字符长的较大文本中搜索子字符串,但也允许任何英文字母、非单词字符([a-zA-Z0-9_] 除外)和数字,因此它不会强制执行您的 2 个要求。它们可以设置为 look-aheads .

这是一个固定的正则表达式:

^(?=.*\W.*)(?=.*[A-Z].*).{8,}$

实际上,如果您还想匹配/允许非英文字母,可以将 [A-Z] 替换为 \p{Lu}。您还可以考虑使用 \p{S} 而不是 \W,或者通过添加符号或字符进一步精确您的 特殊字符 标准类,例如[\p{P}\p{S}](这还将包括所有 Unicode 标点符号)。

增强的正则表达式版本:

^(?=.*[\p{S}\p{P}].*)(?=.*\p{Lu}.*).{8,}$

人类可读的解释:

  • ^ - 字符串的开头
  • (?=.*\W.*) - 要求至少有 1 个非单词字符
    OR (?=.*[\p{S}\p{P}].*) - 至少 1 个 Unicode 特殊符号或标点符号 <
  • (?=.*[A-Z].*) - 要求至少有1个大写英文字母
    (?=.*\p{Lu}.*) - 至少1个Unicode字母
  • .{8,} - 要求至少 8 个符号
  • $ - 字符串结尾

参见 Demo 1Demo 2 (Enhanced regex)

示例代码:

if (preg_match('/^(?=.*\W.*)(?=.*[A-Z].*).{8,}$/u', $header)) {
// PASS
}
else {
# FAIL
}

关于php - 具有四个条件的密码正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com