Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按空格分割字符串,但忽略引号中的空格_Javascript_Regex - Fatal编程技术网

Javascript 按空格分割字符串,但忽略引号中的空格

Javascript 按空格分割字符串,但忽略引号中的空格,javascript,regex,Javascript,Regex,我想将一个字符串,任何字符串,按空格分割成一个数组,最好使用split()方法。但是,我希望忽略引号中的空格 例如: 'word "words in double quotes"' 它应成为一个具有以下特性的阵列: [ 'word', 'words in double quotes' ] [ 'word', '"words in double quotes"' ] 我看了类似的答案,他们通常会给出一个数组: [ 'word', 'words in double qu

我想将一个字符串,任何字符串,按空格分割成一个数组,最好使用
split()
方法。但是,我希望忽略引号中的空格

例如:

'word "words in double quotes"'
它应成为一个具有以下特性的阵列:

[
  'word',
  'words in double quotes'
]
[
  'word',
  '"words in double quotes"'
]
我看了类似的答案,他们通常会给出一个数组:

[
  'word',
  'words in double quotes'
]
[
  'word',
  '"words in double quotes"'
]
这不是我想要的。我不想在数组元素中添加引号


我可以使用什么正则表达式?

我不认为仅通过使用就可以实现您想要的,因为它的使用很可能会导致结果数组中出现空字符串;这就是你给我的绳子。如果您需要一个通用的问题解决方案,我相信
split
根本不起作用

如果您的目标是在不考虑实际字符串的情况下产生相同的结果,我建议您使用和的组合,如图所示:

代码:

var
/*绳子*/
字符串='苹果香蕉'苹果和香蕉'梨'苹果和香蕉和梨',
/*正则表达式*/
正则表达式=/“[^”]+“|[^\s]+/g,
/*使用“map”和“replace”放弃周围的引号*/
result=string.match(regex.map)(e=>e.replace(/“(.+)”/,“$1”);

console.log(result);
我希望这就是您想要的:

var words='word'双引号中的单词“更多文本”引号中的内容“;
var wordArray=words.match(/“([^”]+)“|[^”]+/g);
对于(var i=0,l=wordArray.length;i
  • 按“”拆分初始字符串
  • 将#1的结果中的每个奇数项按空格分割

  • 使用regexp会极大地影响代码的可读性和可维护性,尤其是当您试图解决现有的限制时(例如,缺少look-behind).

    单独使用
    split
    是不可能的,因为
    split
    无法删除最后的引号,除非引入另一个拆分。请尝试使用例如
    const[match,first,second]=string.match(/^(.*)(.*)$/)
    可能是
    双引号中的单词。split(/“(.*?)\s+/g)。过滤器(布尔值)
    ,但这取决于引号中的引号是如何转义的这是否回答了您的问题?对不起,我的意思是让
    单词“带双引号的单词”
    字符串作为示例。正则表达式应该与任何字符串一起使用,例如
    命令arg1“arg2”arg3
    苹果香蕉“苹果和香蕉”
    我修正了帖子中的措辞,以消除任何混淆。请再次查看我的答案@insertcodehere。我已将其更新,以匹配任何给定字符串。我希望这有助于感谢您的帮助!@angle PolitisAlso,虽然这是一个足够的答案,但是否可以删除
    地图()
    方法,并以某种方式将其实现到正则表达式中?不确定为什么会被否决,它工作得很好。我还做了一个jsbench,这个也更快。这应该是公认的答案,而不是Angel Politis的答案