所以,如果我有一個字符串,如: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