gpt4 book ai didi

javascript - 为什么使用正则表达式密码验证失败?

转载 作者:行者123 更新时间:2023-12-01 00:41:08 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式验证密码。我的条件是密码应该有

  1. 一个特殊字符
  2. 一个数字
  3. 一个小写字母
  4. 一个大写字母
  5. 至少 8 个字符

下面是我的代码片段

var a = "Test@123"
if (/^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[@$!%?&])[A-Za-z\d@$!%?&]{8,}$/.test(a)) {
console.log('=====true')
} else {
console.log('false')
}

它应该显示true在控制台上。但目前显示 false为什么?

最佳答案

目前,您在正向前瞻中错过了量词

   (?=.[a-z])

这里 . 表示匹配除换行符之外的任何内容,因为没有量词,因此它只会匹配一次,[a-z] 表示匹配小写字母一次,所以你的所有积极的前瞻正在寻找索引 1 处的值,该值永远无法满足所有正向先行条件,因为我们正在每个正向先行中寻找不同的不同值,

因此,当我们使用 (?=.*[a-z]) 量词时,这意味着匹配任何内容零次或多次,然后后面应该跟小写字母,因此它使条件之前的值动态

var a = "Test@123"
if (/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%?&])[A-Za-z\d@$!%?&]{8,}$/.test(a)) {
console.log('=====true')
} else {

console.log('false')
}

关于javascript - 为什么使用正则表达式密码验证失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com