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

时间:2015-01-30 13:04:47

标签: javascript jquery regex replace grep

我想转换以下字符串:

[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)

有人知道我该怎么做吗?

1 个答案:

答案 0 :(得分:2)

使用双重替换功能。\] +| +\[将匹配所有]加上以下一个或多个空格以及结束[以及前面的空格。只需将这些匹配的字符替换为,<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