在 Javascript 中,我如何将此字符串拆分[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]语境:我需要使用 Node JS 将配置文件中的行处理为数组。一行是以下形式的字符串: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...];我可以使用上面的“someID”从配置行中获取第一项,line.split(',',1)[0]但是如何将字符串的其余部分分成由[和绑定的子元素] ?我试过 JS string.match() :var elements = str.match(/\[(.*)\]/g);但我得到了一个字符串"[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(',') 显然将每个逗号都考虑在内,并在所有逗号上进行拆分,而不仅仅是 .split(',') 之外的逗号[]。我认为解决方案将是正则表达式?谢谢。
1 回答
![?](http://img1.sycdn.imooc.com/5333a1920001d36402200220-100-100.jpg)
绝地无双
TA贡献1946条经验 获得超4个赞
您使用的str.match(/\[(.*)\]/g)方法非常好,只需稍作调整即可。而不是使用.*which 将匹配每个字符,您应该使用它[^\]]来匹配除右括号之外的每个字符。
const str = "someID,[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1],[male,const,0,0,yes,200,1]";
console.log(str.match(/\[[^\]]+\]/g))
\[
匹配左括号[^]
匹配不在此集合中的所有字符[^\]]
匹配所有字符 execpt]
[^\]]+
匹配一个或多个不匹配的字符]
\]
匹配右括号
添加回答
举报
0/150
提交
取消