gpt4 book ai didi

当我期待 4 项时,Javascript 正则表达式仅匹配 2 项

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

此正则表达式 /({{(?!{*textdata.*)#\s*.[\w\.]+\.*}})/gm在 chrome 上使用正则表达式只给我两个匹配项(期望 4)。当我在 http://www.regexr.com/ 上使用相同的表达式时我得到了适量的比赛。有人知道会发生什么吗?

var passingString = '{{#something}}{{#something}} I  THIS What  {{#something}}{{#something}}  \n asdasdas {{/something}}';
var test = /({{(?!{*textdata.*)#\s*.[\w\.]+\.*}})/gm.exec(passingString)
console.debug(test.length);

最佳答案

exec .vs match : exec 一次只会生成一个结果,需要连续调用 exec() 直到生成 null。另一方面,Match 会同时查找所有匹配项。

如果运行此命令,您会得到四个结果:

var passingString = '{{#something}} I HONESTLY CANNOT BELIEVE THIS SHIT           {{#something}} I HONESTLY CANNOT BELIEVE THIS SHIT {{#something}}{{#something}}  \n asdasdas {{/something}}';
passingString.match(/({{(?!{*textdata.*)#\s*.[\w\.]+\.*}})/gm)

结果:

Array [ "{{#something}}", "{{#something}}", "{{#something}}", "{{#something}}" ]

如果您仍然想要exec,您需要将其作为 while 循环运行,当它不再生成任何内容时终止:

var arr;
while (arr = regex.exec(passingString)) {
console.log(arr);
}

这将找到四个条目,然后跳出循环。

关于当我期待 4 项时,Javascript 正则表达式仅匹配 2 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771654/

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