为什么同时使用两个前瞻断言需要+一个\w*呢,单独使用的时候都是true.求解。。

QQ图片20200908182305

为什么同时使用两个前瞻断言需要+一个\w呢,单独使用的时候都是true。
let pwRegex = /(?=\w{5})(?=\w
\d{2})/;
let result = pwRegex.test(sampleWord);
console.log(result)//true;
let sampleWord = “astronaut11”;

let pwRegex = /(?=\w{5})(?=\w*\d{2})/;
let result = pwRegex.test(sampleWord);

console.log(result)//true;
/* /(?=\w{5})(?=\d{2})/ //false
(?=\d{2}) //true
(?=\w{5}) //true */

可以发一下题目链接呢,不清楚题目要求是啥,你的截图感觉也不全,不好回答

第一个consolelog的是题目正确的答案。
consolog后面的
当正则表达式为后面的那个值时,result的值。false为不匹配。
单独两个式子都匹配,合起来时却要加一个/w*。
我在mdn和书上没有查到先行断言的匹配优先级和逻辑。。不知道为什么要加/w*

正则表达式:正向先行断言和负向先行断言
https://learn.freecodecamp.one/javascript-algorithms-and-data-structures/regular-expressions/positive-and-negative-lookahead

第一个consolelog的是题目正确的答案。
consolog后面的
当正则表达式为后面的那个值时,result的值。false为不匹配。
单独两个式子都匹配,合起来时却要加一个/w*。
我在mdn和书上没有查到先行断言的匹配优先级和逻辑。。不知道为什么要加/w*

正则表达式:正向先行断言和负向先行断言
https://learn.freecodecamp.one/javascript-algorithms-and-data-structures/regular-expressions/positive-and-negative-lookahead

断言记录索引,但是不占用位置。正则匹配总是想找到正确的值,但是匹配过程又是惰性的, /(?=\w{5})(?=\d{2})/ 中 (?=\w{5}) 已经索引到前5个字符正确,索引记录为0,后续的(?=\d{2})就继续在前面5个字符里匹配,初始index 为0所以false。
/(?=\w{5})(?=\d{2})/.test('23abc') // true
因此/gi * ? + 便有了用处,可以让它在匹配不到的时候继续移动索引指针

2赞