javascript - 我无法让我的正则表达式代码按预期工作
问题描述
我有这个 Regex-Javascript-Code 来检查 8 到 50 个字符之间的密码,其中至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。
var passwordformat = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,50}$/;
现在,只有当这 4 个术语中至少有 2 个有效时,我才应该有一个 Redex-Code 为真。我怎样才能使用我的 Regex-Code 来实现这一点?
我从未编写过正则表达式代码。此代码是从网上复制的。
解决方案
这可能很难通过单个正则表达式来实现,但通过代码很容易处理:
function checkPassword (password) {
var counter = 0;
if (/[a-z]/.test(password)) {
++counter;
}
if (/[A-Z]/.test(password)) {
++counter;
}
if (/[0-9]/.test(password)) {
++counter;
}
if (/[^A-Za-z0-9]/.test(password)) {
++counter;
}
if (counter >= 2 && password.length >= 8 && password.length <= 50) {
return true;
}
else {
return false;
}
}
var password = "Aa1@blah";
if (checkPassword(password)) {
console.log("MATCH");
}
上面的逻辑简单地迭代了 4 个密码要求并保留了一个计数器。有效密码是满足至少两个标准并且还满足长度要求的密码。
推荐阅读
- amazon-web-services - 如何 SAM 使用项目目录中的初始文件部署 AWS::S3::Bucket
- oracle - 为什么 sql developer(oracle) 中的实时 SQL 监视器让我没有选择?在 sql developer 中查看性能指标的步骤是什么?
- jasper-reports - Jasper 报告 - 获取重复记录
- visual-studio - 可以在不使用 EWDK ISO 的情况下使用 Visual Studio 2019 构建工具 + SDK + WDK 构建 Windows 驱动程序吗?
- ios - ReactNative:在项目目录中找不到“Podfile”
- agora.io - 错误:包 io.agora.rtm 不存在
- c# - Linq 组结果到对象列表
- excel - 使用 VBA 输入公式时出现编译错误
- css - 背景颜色不同偶数行
- jquery - 按多个类过滤点击Jquery