通过]分割字符串,[

Lio*_*cer 1 javascript split

我有一个像下面这样的字符串:

"[a,b,c],[d,e,f],[g,h,i]"
Run Code Online (Sandbox Code Playgroud)

我想知道如何],[在JavaScript中分隔字符串..split("],[")将删除括号.我想保留它们.

预期产量:

["[a,b,c]","[d,e,f]","[g,h,i]"]
Run Code Online (Sandbox Code Playgroud)

编辑:

这是一个更复杂的案例,我在评论],[@Leo 的答案(其中包含一个定界字符串],)中突出显示:

"[dfs[dfs],dfs],[dfs,df,sdfs]]"
Run Code Online (Sandbox Code Playgroud)

预期产量:

["[dfs[dfs],dfs]","[dfs,df,sdfs]]"]
Run Code Online (Sandbox Code Playgroud)

Leo*_*Leo 5

试试这个:

"[a,b,c],[d,e,f],[g,h,i]".match(/(\[[^\]]+\])/g)
// ["[a,b,c]", "[d,e,f]", "[g,h,i]"]
Run Code Online (Sandbox Code Playgroud)

编辑对于OP的新案例,这里有诀窍:

"[dfs[dfs],dfs],[dfs,df,sdfs]]".match(/(?!,\[).+?\](?=,\[|$)/g)
// ["[dfs[dfs],dfs]", "[dfs,df,sdfs]]"]
Run Code Online (Sandbox Code Playgroud)

它适用于更复杂的情况:

"[dfs[aa,[a],dfs],[dfs[dfs],dfs],[dfs,df,sdfs]]".match(/(?!,\[).+?\](?=,\[|$)/g)
// ["[dfs[aa,[a],dfs]", "[dfs[dfs],dfs]", "[dfs,df,sdfs]]"]

"[dfs[aa,[a],dfs],[dfs[dfs],dfs],[dfs,df,sdfs]],[dfs,df,sdfs]]".match(/(?!,\[).+?\](?=,\[|$)/g)
// ["[dfs[aa,[a],dfs]", "[dfs[dfs],dfs]", "[dfs,df,sdfs]]", "[dfs,df,sdfs]]"]
Run Code Online (Sandbox Code Playgroud)

以下是我个人的意见

但是,JavaScript的RegExp不支持lookbehind(?<这对于这样的要求非常方便),使用RegExp可能会成为可维护性的噩梦.在这种情况下,我建议采用一种方法,比如@ alienchow取代分隔符 - 不是那么整洁,而是更易于维护.

  • @Liondancer这很棘手,答案更新了. (2认同)