Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将带方括号的字符串转换为组合方括号内容的列表_Javascript_Jquery_Regex_Replace_Grep - Fatal编程技术网

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

Javascript 将带方括号的字符串转换为组合方括号内容的列表,javascript,jquery,regex,replace,grep,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(/

我要转换以下字符串:

[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);
但是顺序不一样。(休息后将连接块_零件)


有人知道我该怎么做吗?

使用双替换功能。
\]+\[
将匹配所有
]
加上下面的一个或多个空格以及结尾
[
和前面的空格。只需将匹配的字符替换为
,然后再次替换
[
]
中包含一个空字符串

> 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

为什么在test6之后有一个逗号?因为我想分割每个字符串,但要将嵌套在一起的字符串与方形块组合在一起。这很接近,但不起作用的是test6和test7没有被分割为什么需要分割?因为只有括号之间的松散字符串应该是数组中的单个条目。松散文本中不带括号的字符串应该被划分为各自的条目。soo:text1 text2 text3应该变成text1,text2,text3您真是太棒了!谢谢!我已经删除了夫人。更多的是忍者化身:)对不起,我把性别和印度(?)名字联系起来的技巧不是很好。