所以如果我有一个像这样的字符串:
'老板:“人员 1”且职业:“工程师”'
有没有办法可以将字符串拆分为数组,如下所示:
['老板:', '"人员 1"', 'AND', '职业:', '"工程师"']
我有很多不同的正则表达式分割和多个参数分割,但我似乎无法实现这一点。有什么想法吗?
仅供引用:是的,我想保留有关人员 1 和工程师的引文,并在引文之间保留空格
谢谢!
最佳答案
var input = 'boss: "Person 1" AND occupation: "Engineer"';
console.log(input.match(/"[^"]*"|[^ ]+/g));
// Output:
// [ 'boss:', '"Person 1"', 'AND', 'occupation:', '"Engineer"' ]
说明
您想要匹配两种事物:
- 其中没有空格的事物(因为空格分隔术语)。
- 引号中的内容(允许空格)。
这里的正则表达式由两部分组成:
"[^"]*"
- 匹配一个双引号,后跟任意数量的非双引号字符,最后跟另一个双引号。[^ ]+
- 匹配一个或多个非空格字符。
两者通过竖线 (|
) 组合在一起,意思是“或”。它们一起匹配您想要查找的两种类型的内容。
关于JavaScript 字符串分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811031/