javascript用空格分割字符串,但忽略引号中的空格(注意不要被冒号分割)

我需要帮助在空格(“”)的javascript中分割一个字符串,忽略引号表达式中的空格。

我有这个字符串:

var str = 'Time:"Last 7 Days" Time:"Last 30 Days"';

我希望我的字符串被拆分为2:

['Time:"Last 7 Days"', 'Time:"Last 30 Days"']

但我的代码分为4:

['Time:', '"Last 7 Days"', 'Time:', '"Last 30 Days"']

这是我的代码:

str.match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);

谢谢!

最佳答案
s = 'Time:"Last 7 Days" Time:"Last 30 Days"'
s.match(/(?:[^\s"]+|"[^"]*")+/g) 

// -> ['Time:"Last 7 Days"', 'Time:"Last 30 Days"']

解释:

(?:         # non-capturing group
  [^\s"]+   # anything that's not a space or a double-quote
  |         #   or…
  "         # opening double-quote
    [^"]*   # …followed by zero or more chacacters that are not a double-quote
  "         # …closing double-quote
)+          # each match is one or more of the things described in the group

原来,为了修复你原来的表情,你只需要添加一个组:

str.match(/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g)
#                         ^ here.

转载注明原文:javascript用空格分割字符串,但忽略引号中的空格(注意不要被冒号分割) - 代码日志