gpt4 book ai didi

javascript - 如何为两个对应模式之间的共享字符编写正则表达式?

转载 作者:行者123 更新时间:2023-12-03 19:48:32 24 4
gpt4 key购买 nike

我将在“caaab”中找到所有“aa”子字符串。所以,我使用了以下正则表达式。

/aa/g

使用引用的表达式,我希望 JavaScript 的 ma​​tch 方法返回两个相应的模式。如您所见,中间的共享 'a' 导致两个 'aa' 模式!尽管如此,它只返回第一个。正则表达式有什么问题,我该如何解决?

let foundArray=d.match(/aa/g);

最佳答案

这是解决此问题的一种方法。我们可以先记录输入字符串的长度,以备后用。然后,用空字符串对 a(?=a) 进行全局正则表达式替换。这将一个接一个地替换输入中每个出现的子字符串 aa。然后,我们可以将输出的长度与输入的长度进行比较,以确定 aa 发生了多少次。

var input = "caaab";
var sLen = input.length;
var output = input.replace(/a(?=a)/g, "");
var eLen = output.length;
console.log("There were " + (sLen - eLen) + " occurrences of aa in the input");

请注意,您遇到的困难与 JavaScript 的正则表达式引擎的行为有关。如果替换 aa,它将消耗所有内容,因此可能会消耗下一个连续 aa 匹配项的第一个字母 a。使用 a(?=a) 可以解决这个问题,因为先行 (?=a) 不会消耗下一个 a

关于javascript - 如何为两个对应模式之间的共享字符编写正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60193127/

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