gpt4 book ai didi

javascript - 创建包含正则表达式匹配中所有组的数组的有效解决方案

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

我正在寻找一种有效的方法来创建包含所有匹配项的数组,其中包含正则表达式组匹配项。

例如正则表达式 /(1)(2)(3)/g 字符串 123 预期结果 ['1','2','3']

我当前的代码如下所示:

    var matches = [];

value.replace(fPattern, function (a, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15) {
for(var i = 1, v; i < 15; i++){
v = eval('s' + i);
if(v){
matches.push(v);
}else{
break;
}
}
});

它有效,但我不喜欢它的工作方式。

第一件事是,我实际上不知道我的正则表达式变量 fPattern 中有多少组,所以我需要定义很多不必要的变量 s1, s2 ...等等

第二个问题是我决定使用邪恶的eval来防止将这些变量“手动”一一插入数组,也许有更好的解决方案?

还有一件事 - 我确实尝试使用 match() 但不幸的是,当我有模式 /(1)(2)(3)/g 时,它会返回我数组 ['123'] 所以这不是我想要实现的。

谢谢!

编辑

好吧,我发现了一些看起来更好的东西

    matches = fPattern.exec(value);        
if(matches && matches.length){
for(var key in matches){
if(key !== '0'){
if(key !== 'index'){
formated += matches[key] + ' ';
}else{
break;
}
}
};
}

最佳答案

类似的东西

arrays = "123".match(/(1)(2)(3)/);
arrays.splice(0,1);
console.log(arrays);
=> Array [ "1", "2", "3" ]

match 返回一个数组,其中数组索引 0 将包含整个匹配项。从数组索引 1 开始,它将包含相应捕获组的值。

arrays.splice(0,1);

将从数组中删除索引0元素,即整个匹配,结果数组将仅包含捕获组值

关于javascript - 创建包含正则表达式匹配中所有组的数组的有效解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865682/

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