【发布时间】:2017-01-27 03:38:35
【问题描述】:
var mystring = 'Hello test1 "test2 but one word" test3 test4 ';
var mystring_ar= mystring.split(/\s+/);
好的,我有这个/\s+/ 表达式,所以我可以与空格分隔,但我的问题是我想与空格分隔,如果" 包围的单词,正则表达式不应该分隔单词,例如"test2 but one word" 例如下面:
'Hello test1 "test2 but one word" test3 test4 '.split(regex)
=> ['Hello','test1','test2 but one word','test3','test4']
这可能吗?
已编辑
我找到了一半的解决方案,但未正确完成以下代码,但仅适用于单词,例如,如果字符串为 a/b/as d ,则不会将其分隔为 a/b/as and d,而是将其分隔为 a,b,as,d
keywords = keywords.match(/\w+|"[^"]+"/g);
但我认为解决方案应该使用split。它应该像与whitespaces 分开一样工作,并且不要在"" 内部分开
【问题讨论】:
-
@JonathanLonowski 谢谢它解决了我的问题 :)
-
@JonathanLonowski 但我在链接中找到的解决方案有问题。它使用 ` /\w+|"[^"]+"/g ` 但它只接受单词,但我需要单独来自空格,但如果它在
"asd asd asd"之间,则不应将它们分开。但似乎/\w+|"[^"]+"/g这个表达式也分开t1/t2 to t1 and t2 which is not correct for this problem -
@JonathanLonowski 我认为解决方案应该是拆分。它应该像与空格分开一样工作,而不是在“”内部分开。我该怎么做?
-
然后用
\S代替\w,把引用的表达式放在前面:/"[^"]*"|\S+/g(和match)。
标签: javascript jquery regex split