javascript正则表达式匹配

javascript正则表达式匹配,javascript,regex,match,Javascript,Regex,Match,我需要根据空格作为分隔符拆分一个字符串,如下所示。但报价中的任何空格都应该保留。有两种情况需要解决 案例1 到 案例2 到 我正试图用Javascript和正则表达式来实现这一点 var splitArray = query_string.match(/([^\s]*\"[^\"]+\")|\w+/g); 案例1按要求工作,但案例2产生的结果如下 research library "not available" author Bernard 我需要两个案例来处理一个正则表达式。任何想

我需要根据空格作为分隔符拆分一个字符串,如下所示。但报价中的任何空格都应该保留。有两种情况需要解决

案例1 到

案例2 到

我正试图用Javascript和正则表达式来实现这一点

var splitArray = query_string.match(/([^\s]*\"[^\"]+\")|\w+/g);
案例1按要求工作,但案例2产生的结果如下

research 
library 
"not available" 
author
Bernard 
我需要两个案例来处理一个正则表达式。任何想法都值得赞赏

([^\s]*\"[^\"]+\")|\w+:?
我在这里测试了这个正则表达式:

更新: 您可能希望包含更多标点符号,如

e、 研究图书馆!“不可用”作者:“萧伯纳”测试1,测试2;测试2

说明:

[^"\s]+       # One or more non-space/non-quote characters
(?:"[^"]+")?  # optionally followed by a quoted string
|             # or
"[^"]+"       # just a quoted string.

假设带引号的字符串中没有转义引号。

这至少适用于两种情况:

((?:[^\s]*\"[^\"]+\")|[\w:]+)

谢谢你,蒂姆。它工作得很好。在我看来,这是所有答案中最全面的。谢谢。当我尝试使用它时,它分别给出了“author:”和“Bernard”。不过,在Rubular中,它似乎工作得很好。
research 
library 
"not available" 
author
Bernard 
([^\s]*\"[^\"]+\")|\w+:?
([^\s]*\"[^\"]+\")|\w+[:;\.,\?!]?
[^"\s]+(?:"[^"]+")?|"[^"]+"
[^"\s]+       # One or more non-space/non-quote characters
(?:"[^"]+")?  # optionally followed by a quoted string
|             # or
"[^"]+"       # just a quoted string.
((?:[^\s]*\"[^\"]+\")|[\w:]+)