我有一个像下面这样的字符串:
"[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)
试试这个:
"[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取代分隔符 - 不是那么整洁,而是更易于维护.