gpt4 book ai didi

javascript - 以下代码如何表示两个连续的数字?

转载 作者:行者123 更新时间:2023-11-30 09:24:08 26 4
gpt4 key购买 nike

这是来自 FCC beta 的练习,我不明白下面的代码是如何表示两个连续的数字的code> 表示数字,那么这如何在正则表达式中累加为两个数字?

let checkPass = /(?=\w{5,})(?=\D*\d)/;

最佳答案

这不匹配两个数字。它实际上不匹配任何内容,除了一个空字符串,因为在查找之前没有任何内容。

如果你想匹配两个数字,你可以这样做:

(\d)(\d)

或者,如果您真的想使用 (?=\D*\d) 部分进行正向查找,则必须执行如下操作:

\d(?=\D*\d)

这将匹配最后一位数字,后面跟着一串非数字和一位数字。一些示例(突出显示匹配的数字):

2 hhebuehi3
^
245673
^^^^^
2v jugn45
^ ^

要同时捕获第二个数字,您必须将两个数字都放在括号中。即:

(\d)(?=\D*(\d))

Here it is in action .

为了做你原来的例子想要的,即:

  • 人数
  • 5+ \w 个字符
  • 一个非数字字符
  • 一个数字

...您需要在原始示例之前加上一个 \d 字符。这意味着您的查找实际上将匹配不仅仅是空字符串的内容:

\d(?=\w{5,})(?=\D*\d)

重要修改

在使用 JavaScript 在线控制台进行更多尝试后,我解决了您原来的 Regex 的问题。

这匹配具有 5 个或更多字符的字符串,包括至少 1 个数字。这可以匹配两个数字,但它也可以匹配 1 个数字、3 个数字、12 个数字等。为了准确匹配 5 个或更多字符的字符串中的两个数字,您应该指定查找后半部分所需的位数:

let regex = /(?=\w{5,})(?=\D*\d{2})/;

let string1 = "abcd2";
let regex1 = /(?=\w{5,})(?=\D*\d)/;
console.log("string 1 & regex 1: " + regex1.test(string1));

let regex2 = /(?=\w{5,})(?=\D*\d{2})/;
console.log("string 1 & regex 2: " + regex2.test(string1));

let string2 = "abcd23";
console.log("string 2 & regex 2: " + regex2.test(string2));

我最初的回答是关于 Regex 的真空,我掩盖了一个事实,即您将 Regex 与 JavaScript 结合使用,将 Regex 与字符串进行比较时,JavaScript 的工作方式略有不同。我仍然不知道为什么您的原始答案应该匹配两个数字,但我希望这会更有帮助。

关于javascript - 以下代码如何表示两个连续的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com