gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:54 25 4
gpt4 key购买 nike

我没有从脚本中获得预期的效果。我希望密码包含 A-Z、a-z、0-9 和特殊字符。

  • A-Z
  • a-z
  • 0-9 >= 2
  • 特殊字符 >= 2
  • 字符串长度 >= 8

所以我想强制用户使用至少 2 个数字和至少 2 个特殊字符。好的,我的脚本可以工作,但迫使我背靠背使用数字或字符。我不想要那个。例如密码 testABC55$$ 有效 - 但我不希望这样。

相反,我希望 test$ABC5#8 有效。所以基本上数字/特殊字符可以相同或不同 -> 但必须在字符串中分开。

PHP 代码:

$uppercase = preg_match('#[A-Z]#', $password);
$lowercase = preg_match('#[a-z]#', $password);
$number = preg_match('#[0-9]#', $password);
$special = preg_match('#[\W]{2,}#', $password);
$length = strlen($password) >= 8;

if(!$uppercase || !$lowercase || !$number || !$special || !$length) {
$errorpw = 'Bad Password';

最佳答案

使用“可读”格式(可以优化为更短),因为你是正则表达式新手>>

^(?=.{8})(?=.*[A-Z])(?=.*[a-z])(?=.*\d.*\d.*\d)(?=.*[^a-zA-Z\d].*[^a-zA-Z\d].*[^a-zA-Z\d])[-+%#a-zA-Z\d]+$

将您的特殊字符集添加到上述正则表达式中的最后 [...](我现在只放在那里 -+%#)。


解释:

^                              - beginning of line/string
(?=.{8}) - positive lookahead to ensure we have at least 8 chars
(?=.*[A-Z]) - ...to ensure we have at least one uppercase char
(?=.*[a-z]) - ...to ensure we have at least one lowercase char
(?=.*\d.*\d.*\d - ...to ensure we have at least three digits
(?=.*[^a-zA-Z\d].*[^a-zA-Z\d].*[^a-zA-Z\d])
- ...to ensure we have at least three special chars
(characters other than letters and numbers)
[-+%#a-zA-Z\d]+ - combination of allowed characters
$ - end of line/string

关于用于密码验证的 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319028/

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