Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I want a regex which returns true when there is at least 5 characters et 2 digits. For that, I use a the lookahead (i. e. (?=...)).

// this one works
let pwRegex = /(?=.{5,})(?=D*d{2})/;
let result = pwRegex.test("bana12");

console.log("result", result) // true

// this one won't
pwRegex = /(?=.{5,})(?=d{2})/;
result = pwRegex.test("bana12");

console.log("result", result) // false
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
376 views
Welcome To Ask or Share your Answers For Others

1 Answer

Your lookaheads only test from the current match position. Since you don't match anything, this means from the start. Since bana12 doesn't start with two digits, d{2} fails. Its as simple as that ;)

Also, note that having d{2} means your digits has to be adjacent. Is that your intention?

To simply require 2 digits, that doesn't need to be adjacent, try

/(?=.{5,})(?=D*dD*d)/

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...