Javascript split by spaces but not those in quotes

后端 未结 3 878
抹茶落季
抹茶落季 2020-12-03 15:56

The goal is to split a string at the spaces but not split the text data that is in quotes or separate that from the adjacent text.

The input is effectively a string

3条回答
  •  醉酒成梦
    2020-12-03 16:30

    You can use this regex for split:

    var s = 'a:0 b:1 moo:"foo bar" c:2';
    
    var m = s.split(/ +(?=(?:(?:[^"]*"){2})*[^"]*$)/g);
    //=> [a:0, b:1, moo:"foo bar", c:2]
    

    RegEx Demo

    It splits on spaces only if it is outside quotes by using a positive lookahead that makes sure there are even number of quotes after a space.

提交回复
热议问题