Javascript 将给定字符串拆分为数组

Javascript 将给定字符串拆分为数组,javascript,arrays,regex,Javascript,Arrays,Regex,假设给定字符串为: [[1]]代表汽车,[[2]]代表自行车 当遇到[[any number]](例如:[[1]]、[[2]])时,我希望使用正则表达式或任何其他方式将字符串拆分为字符串数组 [ [[1]], " is for cars, as ", [[2]], " is for bikes" ] What I have tried: "[[1]] is for cars, as [[2]] is for b

假设给定字符串为:

[[1]]代表汽车,[[2]]代表自行车

当遇到[[any number]](例如:[[1]]、[[2]])时,我希望使用正则表达式或任何其他方式将字符串拆分为字符串数组

[ 
   [[1]], 
   " is for cars, as ", 
   [[2]],
   " is for bikes"
]

What I have tried: 

"[[1]] is for cars, as [[2]] is for bikes".split(/\[\[(\d+)\]\]/gi);

This returns ",1, is for cars, as ,2, is for bikes"

使用正向后看正向前看

const myString=“[1]]代表汽车,[[2]]代表自行车”;

const output=myString.split(/(?代码中有几个问题:

  • .split
    在错误的位置使用了捕获组,即您只捕获数字而不是
    [[]]
  • 由于拆分模式也是在开始时找到的,因此您需要使用
    .filter
    方法从结果数组中除去空字符串
  • const str=“[1]]代表汽车,[[2]]代表自行车”;
    var arr=str.split(/(\[\[\d+\]\])/gi.filter(布尔值);
    控制台日志(arr);
    /*
    [
    "[[1]]",
    “适用于汽车,如”,
    "[[2]]",
    “是给自行车的”
    ]
    
    */
    试试这个:
    “[[1]]代表汽车,就像[[2]]代表自行车一样”。split(/\s*(\[\[\d+\]\])\s*/gi)。filter(布尔);
    它可以工作,但是你能解释一下这里的filter是做什么的吗?@anubhava为什么要在字符串中包含空格,因为它会忽略单词后面的空格?(例如是汽车,as)它输出(是汽车,as)只需从两侧删除
    \s*
    ,使其成为
    str.split(/(\[\[\d+\]\])/gi)。过滤器(布尔值)
    ,但您的预期输出不会显示前导/尾随空格。我将编辑问题。