2014-04-22 169 views
0

字符串我有以下字符串匹配使用正則表達式

name=cvbb&source=Mamma+Mia&startdate=2014-03-24 

如何與名正則表達式,即字符串「cvbb」相關聯的值相匹配

/[^名稱] = [^ &]/matches = cvbb但我只想cvbb

+0

[好運;很容易解析查詢字符串錯誤](http://zzzzbov.com/blag/querystring-hell)。 – zzzzBov

回答

0

它看起來像你想獲得URL參數值?在這種情況下,你可以使用此功能:

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
var value = getParameterByName('startdate'); 

這將使2014-03-24在一個名爲value

+3

你可以至少站點源http://stackoverflow.com/a/901144/1524085 –

+0

我一直在尋找它(我從我做了一個項目的代碼,但我沒有找到原始來源,謝謝! – SauriolJf

0

變種我假設你要選擇出了名的,對不對?爲此,您可以使用以下表達式: -

/name=([\w]+)&source=.*/ 

說明:第一個單詞名稱寫在那裏。之後([\ w] +)將匹配字母數字字符列表。然後&會來,並停止我們的選擇。如果你想檢查字符串名稱開始,然後使用

/^name=([\w]+)&source=.*/ 

注意:使用[^名稱]表示的字符不應該是N,A,M或E這是不是您要查看的內容。我希望這有幫助。

0

嘗試

var queryString = 'name=cvbb&source=Mamma+Mia&startdate=2014-03-24'; 
var theStringImAfter = queryString.match(/[?&]name=([^&]*)/i)[1] 

注意的queryString可以是一個完整的網址,例如:從window.location.href中,你不需要首先解析查詢字符串。

如果您傳遞的是編碼字符串(如果包含字符在空格,&符號或等號等中不受支持的字符,則是標準字符),則需要在使用該字符串之前對其進行解碼。這可以通過decodeURIComponent(theStringImAfter)完成。

這裏是同樣的方法在可重複使用的功能包裹起來

function getArg(url, arg){ 
    var v=url.match(new RegExp('[?&]' + arg + '=([^&]*)', 'i')); 
    return (v)?decodeURIComponent(v[1]):''; 
} 

用法:

var theStringImAfter = getArg('name=cvbb&source=Mamma+Mia&startdate=2014-03-24', 'name');