当前位置: 首页 > 知识库问答 >
问题:

密码强度的正则表达式,只有一个特殊字符,下划线除外

蓝逸仙
2023-03-14

我有以下正则表达式:

^.*(?=^.{8,}$)(?=.*\d)(?=.*[!@#$%^&*-])(?=.*[A-Z])(?=.*[a-z]).*$

我用它来验证至少一个字母
至少一个大写字母
至少一个数字
至少一个特殊字符
至少8个字符

但除此之外,我还需要限制下划线()。如果我输入passwordPa$sw0rd,这是正确的验证,这是真的。如果我输入Pa$_sw0rd这也是正确验证,这是错误的。

问题是,当所有规则都得到满足时,正则表达式就通过了。我想要一个规则来限制上面的下划线。

任何帮助都是值得的。

共有2个答案

何晗昱
2023-03-14
^(?=.*?\d)(?=.*?[!@#$%^&*-])(?=.*?[A-Z])(?=.*?[a-z])(?!.*_).{8,}$

你可以试试这个<代码>* 开始时没有用。见演示。

https://regex101.com/r/pG1kU1/34

公冶伟
2023-03-14

我认为您可以使用一个否定字符类[^]*添加此限制(另外,删除首字母*,它是多余的,第一个前瞻已经在模式的开头,无需复制^,并且它是完全多余的,因为总长度限制可以在末尾检查):

^(?=.*\d)(?=.*[!@#$%^&*-])(?=.*[A-Z])(?=.*[a-z])[^_]{8,}$

见演示

 类似资料:
  • 问题内容: 我很难提出一个正则表达式,该正则表达式实际上会将某些特殊字符列入黑名单。 我需要使用它来验证输入字段中的数据(在Java Web应用程序中)。我们希望允许用户输入任何数字,字母(我们需要包括带重音的字符,例如法语或德语)和一些特殊字符,例如’-。等等 如何将诸如<>%$等的字符列入黑名单? 问题答案: 我只是将角色列入白名单。 使用正则表达式构建黑名单同样简单,但是你可能需要添加更多字

  • 我试图为密码字段创建一个验证,它只允许字符和 时有什么区别,以及哪些字符来自

  • 我需要使用正则表达式验证密码 密码应至少包含四个字符, 至少有一个小写字符, 至少有一个大写字符, 至少一个数字 我有以上正则表达式工作,但它接受任何特殊字符。我怎么能拒绝呢,请指点

  • 问题内容: 我正在寻找符合以下规则的正则表达式。 允许的字符 字母:az / AZ 数字:0-9 特殊字符:〜@#$ ^&*()-_ + = [] {} | \,。?:( 应允许使用空格) 不允许 特殊字符:<>’“ /;`% 问题答案: 对于允许的字符,您可以使用 验证应仅由允许的字符组成的完整字符串。请注意,在结尾处(否则将是一个范围),并且转义了几个字符。 对于无效字符,您可以使用 检查他们

  • 如果我有一个= 我使用indexof方法删除所有字符,那么字符串的最终输出应该是 我已经编写了但这只会从_的第一个索引中删除字符,它将得到curr_29jan2021_061420210106999.txt,有没有任何方法可以从最后两个而不是第一个中删除字符

  • 问题内容: 我想编写一个简单的正则表达式来检查给定字符串中是否存在任何特殊字符。我的正则表达式可以工作,但是我不知道为什么它还包括所有数字,所以当我输入一些数字时会返回错误。 我的代码: 问题答案: 请不要那样做…… 像这样的小Unicode BABY ANGEL 快要死了!◕◡◕(←这些不是图像)(箭头也不是!) 而且您正在杀死20年的DOS:-)(最后一个笑脸称为WHITE SMILING F