首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式验证给定密码时不包含字母、数字和特殊字符

使用正则表达式验证给定密码时不包含字母、数字和特殊字符
EN

Stack Overflow用户
提问于 2019-10-19 00:25:25
回答 3查看 64关注 0票数 1

我尝试在JavaScript中使用正则表达式来验证给定的密码是否包含字母、数字和特殊字符。然而,我试过的所有东西都不起作用

我试过使用

代码语言:javascript
运行
复制
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@"#%$&])[A-Za-z0-9!@"#%$&]{8,30}$/gm

并为字母、数字和特殊字符创建单独的正则表达式变量:

代码语言:javascript
运行
复制
let alpha = /^[A-Za-z]+$/i
let numer = /^[0-9]+$/i
let special = /^[!@#$%^&*(),.?;":{}|<>']/i

Picture of My Code

当我将password.match(正则表达式)登录到控制台时,我总是看到null

EN

Stack Overflow用户

发布于 2019-10-19 00:51:44

我个人倾向于使用单独的正则表达式,您当前的正则表达式的问题是在开始时使用^,在结束时使用$。这意味着密码从头到尾必须只包含[A-Za-z]。然后检查密码是否从头到尾只包含[0-9]

代码语言:javascript
运行
复制
const regexes = {
  alpha:   /[A-Za-z]/,
  number:  /[0-9]/,
  special: /[!@#$%^&*(),.?;":{}|<>']/,
  length:  /^.{8,30}$/
};

["dgXHUYuDdp", "zMv4qQfZj3", "4JXyrsq!J0", "a5Z!"].forEach(password => {
  let valid = Object.values(regexes).every(regex => password.match(regex));

  console.log(
    "password: " + JSON.stringify(password) + "\n" +
    "valid: " + valid
  );
});

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58454802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档