这个问题已经有答案了:
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,因为是相同的正则表达式。
我问这个问题是因为我想知道我错在哪里。谢谢
1条答案
按热度按时间dced5bon1#
你不应该把“/”放在你的模式中的字符串里面。
更具体地说,
/..../
是用于创建RegExp的特定JavaScript语法。所以
/something/
就像写new RegExp('something')
一样。你写new RegExp('/something/')