我需要在以空格分隔的术语列表中支持确切的短语(用引号引起来)。
因此,用空格字符分割相应的字符串已经不够了。
Example:
input : 'foo bar "lorem ipsum" baz'
output: ['foo', 'bar', 'lorem ipsum', 'baz']
我想知道这是否可以通过单个正则表达式来实现,而不是执行复杂的解析或拆分和重新连接操作。
任何帮助将不胜感激!
var str = 'foo bar "lorem ipsum" baz';
var results = str.match(/("[^"]+"|[^"\s]+)/g);
...返回您正在寻找的数组。
但请注意:
- 包含边界引号,因此可以使用以下命令删除
replace(/^"([^"]+)"$/,"$1")
关于结果。
- 引号之间的空格将保持不变。所以,如果之间有三个空格
lorem
and ipsum
,它们将出现在结果中。您可以通过运行来修复此问题replace(/\s+/," ")
关于结果。
- 如果没有关闭
"
after ipsum
(即错误引用的短语)您最终会得到:['foo', 'bar', 'lorem', 'ipsum', 'baz']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)