javascript - 自定义密码要求的正则表达式
问题描述
我试图根据密码要求创建一个正则表达式。要求是
- 最少八 (8) 个字符
- 至少一个数字 (0-9)
- 以下任意三项:
- 小写
- 大写
- 数字
- 特殊字符 ( !" # $ % & ' ( ) * + , - . / : ; < = > ?@ [ \ ] ^ _ ` { | } ~ )
我创建了这个正则表达式
/^[0-9a-zA-Z\s!"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~]+$/g
我对正则表达式的了解不多,所以只需要确认它是正确的正则表达式还是需要更改。
解决方案
这个怎么样:
^(?=.{8,})(?=.*?\d)(?=.*[\s!\"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~])(?=[a-zA-Z0-9].*?[a-zA-Z0-9].*?[a-zA-Z0-9].*?).*$
解释:
我使用了很多积极的前瞻,你可以在这里阅读更多
基本上,前瞻确保某个位置前面有一些字符。在检查密码的开头是否符合您的所有条件后,我们将匹配密码。
可以这样想:确保一切正确,如果正确,则匹配密码。否则你不会。
(?=.{8,})
检查是否至少有 8 个字符
(?=.*?\d)
检查是否至少有 1 个数字
^(?=.{8,})(?=.*?\d)(?=.*[\s!\"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~])
检查是否至少有 3 个字母和/或数字
推荐阅读
- r - 匹配R中两个数据框中的任何字符串
- python - 在二维 numpy 数组中获取邻居的有效方法
- c# - 离线模式下的 datagridview 和组合框
- java - 如何转换日期和时间对象 12 小时格式?
- google-sheets - 在行和列中具有多个条件的 INDEX/MATCH
- apache-kafka - 似乎无法让 EmbeddedSingleNodeKafkaCluster 运行
- c++ - 循环向下转换的 C++ dynamic_cast 不能按预期工作
- azure - 如何验证使用 Microsoft Graph API 生成的 oauth 令牌
- amazon-web-services - Terraformed AWS API Gateway 自定义域名抛出 403 Forbidden
- python - 如何将 geckodriver 添加到 android 以在 QPython 中运行 selenium 代码