我有一個字符串,它看起來像這樣:JavaScript正則表達式獲取字符串後匹配的模式
var str = "fname=peter lname=pan age=12"
我需要的是得到的字符串數組,每個字符串的右後FNAME或L-NAME去或年齡,出str變量。結果如下:['peter', 'pan', '12']
。
你能否建議我一個有效的解決方案來完成這項任務(我得到了很長的一個,並相信我你永遠不會看到這一點)?
謝謝!
我有一個字符串,它看起來像這樣:JavaScript正則表達式獲取字符串後匹配的模式
var str = "fname=peter lname=pan age=12"
我需要的是得到的字符串數組,每個字符串的右後FNAME或L-NAME去或年齡,出str變量。結果如下:['peter', 'pan', '12']
。
你能否建議我一個有效的解決方案來完成這項任務(我得到了很長的一個,並相信我你永遠不會看到這一點)?
謝謝!
嘗試:
var arr = [];
str.replace(/=(\w+)/g, function(a,b) {
arr.push(b);
});
console.log(arr); //=> ["peter", "pan", "12"]
這裏的另一種方式類似正則表達式來做到這一點:
var arr = str.match(/=\w+/g).map(function(m){
return m.replace('=','');
});
您不需要regex
。
var str = "fname=peter lname=pan age=12";
str = str.split(' ');
for(var i = 0, length = str.length; i < length; i++) {
str[i] = str[i].split('=')[1];
}
console.log(str); // ['peter', 'pan', '12']
你也可以考慮硬編碼鍵,以避免循環:
var s = "fname=peter lname=pan age=12"
var pat = /fname=(\w+)\s*lname=(\w+)\s*age=(\w+)/
r.match(pat)
//returns ["fname=peter lname=pan age=12", "peter", "pan", "12"]
這是一個更好的方式來做到這一點,使用正則表達式比使用分割方法和循環總是更高效和更清晰。如果你不想修改'str'變量,只要確保在函數結尾處返回匹配的字符串'b'。 – ElHacker
'replace'不會改變原始字符串。 – elclanrs
你是對的,對不起我的壞。 – ElHacker