所以,如果我有一个字符串,如:Javascript字符串分割
'boss: "Person 1" AND occupation: "Engineer"'
有没有一种方法,我可以在字符串分割成一个数组像这样:
['boss:', '"Person 1"', 'AND', 'occupation:', '"Engineer"']
我有很多不同的正则表达式分裂和多个参数分裂,我似乎无法实现这一点。有任何想法吗?
FYI:是的,我想在周围人1和工程师报价离开,并保持在任何空间是报价之间
谢谢!
所以,如果我有一个字符串,如:Javascript字符串分割
'boss: "Person 1" AND occupation: "Engineer"'
有没有一种方法,我可以在字符串分割成一个数组像这样:
['boss:', '"Person 1"', 'AND', 'occupation:', '"Engineer"']
我有很多不同的正则表达式分裂和多个参数分裂,我似乎无法实现这一点。有任何想法吗?
FYI:是的,我想在周围人1和工程师报价离开,并保持在任何空间是报价之间
谢谢!
var input = 'boss: "Person 1" AND occupation: "Engineer"';
console.log(input.match(/"[^"]*"|[^ ]+/g));
// Output:
// [ 'boss:', '"Person 1"', 'AND', 'occupation:', '"Engineer"' ]
说明
要匹配两种工作:
正则表达式由两个部分组成:
"[^"]*"
- 这是一个双引号,后跟任意数量的非双引号字符,紧接着又双引号匹配。[^ ]+
- 这匹配一个或多个非空格字符。这两个与一个管道(|
)相结合,这意味着“或”。它们一起匹配你想找到的两种类型的东西。
这里的另一个答案指出,正则表达式的第一部分可以是'“。*?”'代替。我认为这也很好。 – smarx
如果console.log
打印一个数组,它会用撇号围绕每个字符串元素,因此您只能在控制台输出中看到撇号。
如果你想获得一个字符串格式化你想要的方式, 使用下面的脚本:
var str = 'boss: "Person 1" AND occupation: "Engineer"';
var pat = /"[^"]+"|\S+/g;
var res1 = str.match(pat);
var result = "['" + res1.join("', '") + "']";
你尝试过什么?你卡在哪里? – Cruiser