gpt4 book ai didi

javascript - 一行 "preg match all"与 JavaScript 中的组

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

如何在正则表达式中获取组选择器的所有连续匹配项?所有匹配项(不仅仅是第一个)意味着我需要使用全局标志 (/g) 但是使用全局标志无法通过 myString.match()RegExp 在结果数组中获取组.exec(我的字符串)。这两个函数对于这种情况都是无用的,因为组合全局标志和组仅返回第一个匹配项。

例如,我有 myString = 'Lorem Ipsum group-a-1 blah group-b-1 打印组的虚拟简单文本 -a-2 blah group-b-2 and typesetting industry' 我想得到 group-a-* 和 group-b-* 对的所有出现.


我可以使用第一个 RegExp 将整个部分与组匹配,然后我需要使用第二个 RegExp(但没有全局标志)来获取组。 使用 myString.match():

var matchesOne = myString.match(/(group-a-[0-9]) blah (group-b-[0-9])/gi); // ["group-a-1 blah group-b-1", "group-a-2 blah group-b-2"]
for (var i = 0; i < matchesOne.length; i++) {
var matchesTwo = matchesOne[i].match(/(group-a-[0-9]) blah (group-b-[0-9])/i); // note missing global flag here
console.log("WHOLE: " + matchesTwo[0] + ";", "GROUP-A: " + matchesTwo[1] + ";", "GROUP-B: " + matchesTwo[2] + ";");
}
// Result:
// WHOLE: group-a-1 blah group-b-1; GROUP-A: group-a-1; GROUP-B: group-b-1;
// WHOLE: group-a-2 blah group-b-2; GROUP-A: group-a-2; GROUP-B: group-b-2;

Developer mozilla推荐使用 while 循环的类似解决方案。 使用 RegExp.exec(myString):

var matches, myRegExp = /(group-a-[0-9]) blah (group-b-[0-9])/gi;
while ((matches = myRegExp.exec(myString)) !== null) {
console.log("WHOLE: " + matches[0] + ";", "GROUP-A: " + matches[1] + ";", "GROUP-B: " + matches[2] + ";");
}
// Result:
// WHOLE: group-a-1 blah group-b-1; GROUP-A: group-a-1; GROUP-B: group-b-1;
// WHOLE: group-a-2 blah group-b-2; GROUP-A: group-a-2; GROUP-B: group-b-2;

这两种解决方案都需要循环多次运行 RegExp。但我想使用简单的一个命令/函数,例如在 php 中执行的 preg_match_all() 。可能吗?

最佳答案

最优雅的解决方案似乎是myString.replace(),它不会替换任何内容(我忽略返回值)但有助于轻松获得整个匹配部分及其组。数据显然存储在单独的变量中,而不是抽象的数字索引数组。

myString.replace(/(group-a-[0-9]) blah (group-b-[0-9])/gi, function(whole, groupA, groupB) {
console.log("WHOLE: " + whole + ";", "GROUP-A: " + groupA + ";", "GROUP-B: " + groupB + ";");
});
// Result:
// WHOLE: group-a-1 blah group-b-1; GROUP-A: group-a-1; GROUP-B: group-b-1;
// WHOLE: group-a-2 blah group-b-2; GROUP-A: group-a-2; GROUP-B: group-b-2;

关于javascript - 一行 "preg match all"与 JavaScript 中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125319/

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