首页 > 解决方案 > 来自 freeCodeCamp 的“正负前瞻”问题

问题描述

我正在考虑来自 freeCodeCamp 的这个问题。这是链接:正则表达式:正负前瞻

挑战:在 pwRegex 中使用前瞻来匹配长度大于 5 个字符、不以数字开头且具有两个连续数字的密码。

 let sampleWord = "astronaut";
 let pwRegex =   // Change this line
 result = pwRegex.test(sampleWord);

首先,该站点显示的模型答案是; /^\D(?=\w{5})(?=\w*\d{2})/;

这是我的问题;

  1. 为什么 5 后不需要逗号?
    问题是“长度超过 5 个字符”,所以我认为应该是 {5,},而不是 {5}。

  2. 如何提前检查连续数字?
    我认为“(?= \ w * \ d {2})”部分不足以检查连续数字。我在我的 chrome 控制台上尝试了以下代码,

    let mytest ="pass75";    
    let Regex = /^\D(?=\w{5,})(?=\w*\d{2})/;  //This is the site's model answer.
    Regex.test(mytest);   //=>True
    

    “7”和“5”不是连续的数字,但它说的是真的,所以我认为这个模型答案并不完整。你怎么看?有没有人可以解释如何解决这个问题?

标签: javascript

解决方案


我就是这样解决的!记住长度大于(不 >=) 5 个字符的匹配密码。休息在代码中是完全自我解释的。

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

推荐阅读