将带有方括号的字符串转换为组合方括号内容的列表

Transform string with square brackets into list in where square bracket content is combined

本文关键字:方括号 组合 列表 字符串 转换      更新时间:2023-09-26

我想转换以下字符串:

[test1 test2] test3 [test4 test5] test6 test7 [test8]

放入以下数组中:

test1 test2, test3, test4 test5, test6, test7, test8

我已经尝试了很多从 $.grep 到 regEx 的东西。但它只是没有削减它。我最接近的是以下几点:

var block_parts = text.match(/[^[']]+(?=])/g);
var rest = text.replace(/ *'[[^']]*]/g, '').split(" ");
var complete = $.merge(rest, block_parts);

但是它的顺序不一样。(休息后会附block_parts)

有人知道我该怎么做吗?

使用双重替换功能。'] +| +'[将匹配所有]加上后面的一个或多个空格,以及结束[以及前面的空格。只需将这些匹配的字符替换为 ,<space>,然后再次将 []替换为空字符串。

> var s = "[test1 test2] test3 [test4 test5] test6 test7 [test8]"
undefined
> var m = s.replace(/'] +| +'[/g, ", ").replace(/['[']]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6 test7, test8

更新:

> var m = s.replace(/'] +| +'[|'s+(?!'w+'])/g, ", ").replace(/['[']]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6, test7, test8