Positive and Negative Lookahead confusion

Tell us what’s happening:
I do not understand why we need \D* on the second lookahead. Please help me understand this. Also, it would be nice if someone can explain what each Regex is doing to achieve what the problem says. Thank you in advance

Your code so far

let sampleWord = “astronaut”;

let pwRegex = /(?=\w{5,})(?=\D*\d{2,})/; // Change this line

let result = pwRegex.test(sampleWord);


let sampleWord = "astronaut";
let pwRegex = /(?=\w{5,})(?=\D*\d{2,})/; // Change this line
let result = pwRegex.test(sampleWord);

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/regular-expressions/positive-and-negative-lookahead

This might help you understand https://regexr.com/

1 Like

@zygopok in the problem there are two conditions that need to be met.

  1. passwords that are greater than 5 characters long
  2. passwords that have two consecutive digits (based on the test cases I am assuming at the end of the password).

The lookaheads are checking for these two conditions.

  1. (?=\w{5,}) checking the length

  2. (?=\D*\d{2,}) checking the ______

In combination with the amazing resource @JohnnyBizzel has shared I think you can figure this out. If not let us know. You got this!!

1 Like