Javascript 如何将字符串拆分为多个子字符串(用[]括起来),并在子字符串中找到分隔符?

Javascript 如何将字符串拆分为多个子字符串(用[]括起来),并在子字符串中找到分隔符?,javascript,node.js,Javascript,Node.js,TLDR 在Javascript中,如何将这个字符串[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]拆分为一个子字符串数组,每个子字符串以[]为界: [测试,字符串,0,5,bob,0,1],[年龄,数字,1100,20,0,1],[男性,常量,0,0,是,200,1] 上下文: 我需要使用NodeJS将配置文件中的行处理到数组中。 行是以下形式的字符串: someID,[test,stri

TLDR

在Javascript中,如何将这个字符串
[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]
拆分为一个子字符串数组,每个子字符串以
[]
为界:

[测试,字符串,0,5,bob,0,1]
[年龄,数字,1100,20,0,1]
[男性,常量,0,0,是,200,1]

上下文:

我需要使用NodeJS将配置文件中的行处理到数组中。 行是以下形式的字符串:

someID,[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1],[male,const,0,0,yes,200,1]
这需要作为数组中的元素结束:

var config = [
// One line from the config file:
['someID', ['test','string',0,5,'bob',0,1],[12,'number',1,100,20,0,1],['male','const',0,0,'yes',200,1]],

// more elements each representing a line...
];
我可以使用
line.split(',',1)[0]
从上面的配置行“someID”中获取第一项,但是如何将字符串的其余部分分离为由
[
]
绑定的子元素呢

我尝试了JS string.match():

但是我有一个字符串

"[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1], [male,const,0,0,yes,200,1]"
(我意识到这是因为它只与第一个
[
和最后一个
]
匹配,而不是处理中间的所有内容)

而不是具有单独字符串的数组:

"[test,string,0,5,bob,0,1]",
"[age,number,1,100,20,0,1]",
"[male,const,0,0,yes,200,1]",

JS.split(“,”)显然会考虑每个逗号,并在所有逗号上拆分,而不仅仅是
[]
之外的逗号。我认为解决方案将是正则表达式?谢谢。

您使用str.match(/\[(.*)\]/g)的方法非常好,只需要稍微调整一下。不要使用将匹配每个字符的
*
,而应使用
[^\]]
匹配除右括号外的每个字符

const str=“someID,[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]”;

log(str.match(/\[^\]]+\]/g))
您使用
str.match(/\[(.*\]/g)
的方法非常好,只需要稍微调整一下。不要使用将匹配每个字符的
*
,而应使用
[^\]]
匹配除右括号外的每个字符

const str=“someID,[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]”;

console.log(str.match(/\[^\]]+\]/g))
如果
..0,1],[ma…
中的空格是一个打字错误,则只需在
]上拆分,[
,否则…
.split()
“理解”正则表达式如果
..0,1],[ma…
中的空格是一个打字错误,则只需在
],[
上拆分,否则…
.split正则表达式
"[test,string,0,5,bob,0,1]",
"[age,number,1,100,20,0,1]",
"[male,const,0,0,yes,200,1]",