2012-12-18 50 views
0

我有一個字符串,它看起來像這樣:JavaScript正則表達式獲取字符串後匹配的模式

var str = "fname=peter lname=pan age=12"

我需要的是得到的字符串數組,每個字符串的右後FNAME或L-NAME去或年齡,出str變量。結果如下:['peter', 'pan', '12']

你能否建議我一個有效的解決方案來完成這項任務(我得到了很長的一個,並相信我你永遠不會看到這一點)?

謝謝!

回答

2

嘗試:

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('=',''); 
}); 
+0

這是一個更好的方式來做到這一點,使用正則表達式比使用分割方法和循環總是更高效和更清晰。如果你不想修改'str'變量,只要確保在函數結尾處返回匹配的字符串'b'。 – ElHacker

+1

'replace'不會改變原始字符串。 – elclanrs

+0

你是對的,對不起我的壞。 – ElHacker

1

您不需要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'] 

demo

0

你也可以考慮硬編碼鍵,以避免循環:

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"] 
相關問題