new RegExp(pattern)和pattern.test(string)之间的差异[重复]

p4tfgftt  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(94)

这个问题已经有答案了

Why this javascript regex doesn't work?(1个答案)
关闭27天前。
我尝试用正则表达式为JavaScript创建一个强密码规则。然而,我发现一个奇怪的结果,使用不同的方法。
第一种方法(有效):

const value = 'TTest90()';
const firstApproach = /^(?=(.*[a-z]){3,})(?=(.*[A-Z]){2,})(?=(.*[0-9]){2,})(?=(.*[!@#$%^&*()\-_+?.]){2,}).{8,}$/.test(value);

变量firstApproach为真,这是预期结果。
下一种方法是使用新的RegExp,如:

const pattern = '/^(?=(.*[a-z]){3,})(?=(.*[A-Z]){2,})(?=(.*[0-9]){2,})(?=(.*[!@#$%^&*()\-_+?.]){2,}).{8,}$/';
const regex = new RegExp(pattern);
const secondApproach = regex.test(value);

但是,secondApprocach现在在相同的正则表达式中为false。
我找不到为什么secondApproach变量不是true,因为是相同的正则表达式。
我问这个问题是因为我想知道我错在哪里。谢谢

dced5bon

dced5bon1#

你不应该把“/”放在你的模式中的字符串里面。
更具体地说,/..../是用于创建RegExp的特定JavaScript语法。
所以/something/就像写new RegExp('something')一样。你写new RegExp('/something/')

相关问题