2012-08-09 37 views
-1

我試圖拿出一個regulat表達式提取查詢字符串參數的值的javascript:正則表達式解析URL字符串

到目前爲止,現在我來到了下列要求:

app.getValue = function() { 
    var regExp = '[&?]'+$("#token").val()+'=(.*?)[&$]'; 
    var re = new RegExp(regExp); 
    var res = re.exec($("#url").val()); 
    if (!res) return ''; 
    return res[1] || ''; 
} 

這個問題似乎是在「$」的resultar表達的頭被interepreted作爲文字字符,而不是輸入字符串

所以與followgin查詢字符串的結尾:

http://wines?len=10&page=500&filter=bogota and salvador&sort=name asc 

尋找令牌「排序」並沒有得到我任何東西,如果我添加了一個「&」或「$」,在它工作的字符串的結尾......

我失去的東西?

+0

可能重複http://stackoverflow.com/questions/647259/javascript-query-string) – katspaugh 2012-08-09 05:51:11

回答

1

我看起來像是不可能在一個字符類組裏面表達一個行尾字符。相反,我認爲您可以使用(&|$|,)來匹配逗號,符號或行尾。請注意,這會創建一個新的匹配組,但不會影響您的代碼。

+0

你是對的,非常感謝! – opensas 2012-08-09 06:06:31

1

嘗試此

var urlParams = {}; 
(function() { 
    var match, 
     pl  = /\+/g, // Regex for replacing addition symbol with a space 
     search = /([^&=]+)=?([^&]*)/g, 
     decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, 
     query = window.location.search.substring(1); 

    while (match = search.exec(query)) 
     urlParams[decode(match[1])] = decode(match[2]); 
})(); 

例如:

?var1=test1&var2=test2 

結果:

alert(urlParams["var1"]); 
[JavaScript的查詢字符串(的
+0

非常好的一段代碼,我仍然試圖完全掌握那個正則表達式,儘管...... – opensas 2012-08-10 14:38:50