PHP正则表达式用于强密码验证[重复]

2023-11-26

我在网上看到过以下正则表达式。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

仅当字符串满足以下条件时才验证:

   * contain at least (1) upper case letter
   * contain at least (1) lower case letter
   * contain at least (1) number or special character
   * contain at least (8) characters in length

我想知道如何转换这个正则表达式,以便它检查字符串

* contain at least (2) upper case letter
* contain at least (2) lower case letter
* contain at least (2) digits
* contain at least (2) special character
* contain at least (8) characters in length

好吧,如果它至少包含 2 个大写、小写、数字和特殊字符,那么我就不会 需要8个字符的长度。

特殊字符包括:

`~!@#$%^&*()_-+=[]\|{};:'".,/?


我必须同意艾伦的观点。如果现有的正则表达式如此复杂,为什么要尝试仅用一个正则表达式来完成它呢?

只需将其分解为易于理解的简单步骤即可。你已经这么做了。

现在编写 4 个正则表达式来验证您的部分,向 4 个正则表达式添加基本逻辑并测量字符串的长度。完毕。

你更愿意调试哪个,这个:

(?=^(?:[^A-Z]*[A-Z]){2})(?=^(?:[^a-z]*[a-z]){2})(?=^(?:\D*\d){2})(?=^(?:\w*\W){2})^[A-Za-z\d\W]{8,}$(顺便说一句,这不起作用......)

or this:

function valid_pass($candidate) {
   $r1='/[A-Z]/';  //Uppercase
   $r2='/[a-z]/';  //lowercase
   $r3='/[!@#$%^&*()\-_=+{};:,<.>]/';  // whatever you mean by 'special char'
   $r4='/[0-9]/';  //numbers

   if(preg_match_all($r1,$candidate, $o)<2) return FALSE;

   if(preg_match_all($r2,$candidate, $o)<2) return FALSE;

   if(preg_match_all($r3,$candidate, $o)<2) return FALSE;

   if(preg_match_all($r4,$candidate, $o)<2) return FALSE;

   if(strlen($candidate)<8) return FALSE;

   return TRUE;
}

为什么人们觉得他们必须编写一个没人能理解的正则表达式,这样他们才能一次性完成,这超出了我的理解......


好吧,如果你真的想要一个正则表达式,请了解前瞻验证您的规则。

这个怪物一口气完成了你的要求:

^                                        # start of line
(?=(?:.*[A-Z]){2,})                      # 2 upper case letters
(?=(?:.*[a-z]){2,})                      # 2 lower case letters
(?=(?:.*\d){2,})                         # 2 digits
(?=(?:.*[!@#$%^&*()\-_=+{};:,<.>]){2,})  # 2 special characters
(.{8,})                                  # length 8 or more
$                                        # EOL 

Demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP正则表达式用于强密码验证[重复] 的相关文章

  • 正则表达式以任何顺序匹配查询中的所有单词

    我正在尝试为一个项目构建一个搜索功能 该功能根据用户搜索输入以及它是否与针对项目列出的关键字匹配来缩小项目范围 为此 我将项目关键字保存在data属性并使用 RegExp 模式将查询与这些关键字进行匹配 我目前正在使用这个表达式 我知道它不
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 如何验证地图中的集合

    我有一个问题 ValidJSR 303 的注释 这注解 http docs jboss org hibernate validator 4 3 reference en US html single d0e425对于普通列表或集合工作正常
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • Python 中的正则表达式匹配长度超过八个字母的任何内容

    尽管尝试掌握 grep 和相关的 GNU 软件 但我还没有接近掌握正则表达式 我确实喜欢它们 但我还是觉得它们有点碍眼 我想这个问题对某些人来说并不困难 但我花了几个小时试图弄清楚如何在我最喜欢的书中搜索大于一定长度的单词 最后 想出了一些
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize

随机推荐

  • 排序哈希表(映射、字典)数据结构设计

    下面是数据结构的描述 它的操作就像一张普通的地图get put and remove方法 但有一个sort可以调用对地图进行排序的方法 然而 地图记得它的排序结构 因此后续调用 sort 可以更快 如果结构在调用之间没有改变太多 sort
  • ImageMagick 转换和 GNU 并行在一起

    我想加快以下命令的速度 convert limit memory 64 limit map 128 antialias delay 1x2 final png movie mp4 我见过其他的博客文章其中并行和转换一起使用 所以我想知道如何
  • 从多个选择列表中获取未选择的选项

    我有一个多选列表 当用户取消选择所选选项时 我想知道用户取消选择的选项的值 我该如何捕捉它 我的示例代码如下
  • 动态地将一组字段添加到反应式表单中

    我有两个输入字段 姓名和姓氏 我有两个按钮 提交和 添加人员 单击 添加人员 应添加一组新字段 姓名 如何实现这一目标 我找到了如何动态添加单个输入字段的解决方案 但在这里我需要添加一组 我的代码现在没有 添加人员 功能 import Fo
  • 为什么在 Windows 上尝试 Socket.connect 失败需要 1 秒?

    使用 net 时 我注意到尝试连接到未侦听的端口总是需要 1 秒 检查这是否是 net 抽象中的问题或者是否是较低级别的问题 并将其与 linux 进行比较 其中不成功telnet大约需要 3 毫秒 我使用了一个 node js 脚本来连接
  • 使用 Angular CLI 和 Angular 5 在运行时动态加载新模块

    目前我正在开发一个托管在客户端服务器上的项目 对于新的 模块 有无意重新编译整个应用程序 也就是说 客户想要在运行时更新路由器 延 迟加载模块 我已经尝试了几种方法 但无法使其发挥作用 我想知道你们中是否有人知道我还可以尝试什么或我错过了什
  • 如何使用 jQuery 发出指定 contentType 的 jsonp POST 请求?

    我需要使用内容类型 application json 发出 jsonp POST 请求 我可以像这样向服务器发出 POST 请求 jQuery ajax type POST url url data data success success
  • Swift 中的#pragma 标记?

    在 Objective C 中 我可以使用 pragma mark在符号导航器中标记我的代码部分 由于这是一个 C 预处理器命令 因此它在 Swift 中不可用 Swift 中是否有替代方案 或者我是否必须使用丑陋的注释 您可以使用 MAR
  • 在scrapy中抓取后发送电子邮件

    pipeline py代码 class Examplepipeline object def init self dispatcher connect self spider opened signal signals spider ope
  • 是否可以使用 Linkedin Api 获取所有 Linkedin 个人资料帖子

    我正在尝试使用 linkedin API 来显示我的个人资料的提要 我从第一天开始就发布了这些内容 帖子包括媒体 图像 视频等 我想知道是否有可用的 Api 我可以在其中传递一些参数并获取我的 linkedin 个人资料的所有帖子 如果有人
  • 是否有必要在 return 语句中使用 std::move ,并且应该返回右值引用吗?

    我试图理解 C 11 的右值引用和移动语义 这些示例之间有什么区别 哪些示例不进行矢量复制 第一个例子 std vector
  • 如何在控制器中不使用 Rails 操作参数

    我正在 Rails 服务器中为 Shipworks 实现第三方 API 并且 Shipworks 客户端应用程序正在发布action具有 Shipworks 特定语义的参数 然而 Rails 路由逻辑会将此参数覆盖为控制器方法的名称 我是否
  • 如何更新 pandas 中的现有数据框?

    给定这两个数据框 gt gt gt df1 pd DataFrame c1 a a b b c2 x y x y val 0 gt gt gt df1 c1 c2 val 0 a x 0 1 a y 0 2 b x 0 3 b y 0 gt
  • Unity3D,从Unity.UI面板构建PNG?

    考虑任何 Unity UICanvas你可能有 想象一个典型的Panel在那张画布上 假设它恰好包含一些图像 也许一些文本等等 如果您可以将该面板 仅面板 转换为屏幕截图 Texture2D 或 PNG 那将非常方便 我唯一能想到的就是使用
  • 更改 Forge 中的材料

    目前 我们正在让客户端在页面加载时检索对象状态 这将导致模型中的 待处理 对象变成不同的颜色 然后我们轮询更改以更新着色 首先 当查看器加载时 挂起的对象会着色 然后我们继续轮询以再次检查和更改状态 以使 Forge 以不同的颜色渲染它们并
  • 编辑QTableView单元格后如何更改背景颜色?

    我有这个带有自定义模型和委托的 QTableView 编辑后如何更改单元格的背景颜色 我应该在代表处这样做吗setModelData index model setData index QVariant True Qt UserRole 然
  • 将 ActionBar 主页按钮设置在右侧

    我可以将 ActionBar 中的主页按钮设置在右侧吗 android R id home 我想更改主页按钮的位置 因为该语言使用从右到左的打字方式 是否可以 如果是 请告诉我该怎么做 如果没有 如何将 ActionBarDrawerTog
  • Python 会在赋值时创建对象的副本吗?

    当我尝试这段代码时 dict a dict b dict c dict c hello goodbye print dict a print dict b print dict c 我预计它只会初始化dict a dict b and di
  • 媒体播放器、打瞌睡模式、唤醒锁和前台服务

    我读过几篇关于 Android M 中新的 打瞌睡 模式的文章 还有 Android 开发者网站上的文章 https developer android com training monitoring device state doze s
  • PHP正则表达式用于强密码验证[重复]

    这个问题在这里已经有答案了 我在网上看到过以下正则表达式 8 d W n A Z a z 仅当字符串满足以下条件时才验证 contain at least 1 upper case letter contain at least 1 low