簡體   English   中英

使用JavaScript正則表達式匹配字符串

[英]Matching a string using a javascript regex

我有以下字符串:

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

以下正則表達式匹配到startdate

(source=.*(startdate))

我如何匹配字符串,直到Mia之后的'&'?

更新:

命名= cvbb&源=媽媽+米亞&STARTDATE = 2014年3月24日與日期= 2014年4月24日

我希望比賽持續到Mia之后&的出現

由於您打算稍后解析數據 ,因此建議您像這樣獲取鍵值對數據

var data = "name=cvbb&source=Mamma+Mia&startdate=2014-03-24";
console.log(data.split("&").reduce(function(result, currentItem) {
    var splitted = currentItem.split("=");
    result[splitted[0]] = splitted[1];
    return result;
}, {}));

產量

{ name: 'cvbb', source: 'Mamma+Mia', startdate: '2014-03-24' }

如果你想忽略startdate獨自一人,那么你可以包括這樣的條件

    var splitted = currentItem.split("=");
    if (splitted[0] !== "startdate") {
        result[splitted[0]] = splitted[1];
    }
    return result;

那么結果將是

{ name: 'cvbb', source: 'Mamma+Mia' }
"name=cvbb&source=Mamma+Mia&startdate=2014-03-24".match(/source=([^&]+)/)[1]

假設這些事物總是相同的順序,則(name=.*&)應該這樣做。

使用正則表達式/.*&/將匹配到最后一個&

更新的正則表達式:

/name=.*&source=[^&]*/

如果字符串以name開頭, source后面name=cvbb&source=Mamma+Mia將給出name=cvbb&source=Mamma+Mia

javascript對象

使用Javascript:

觀看現場演示: FIDDLE

function params_match(string) {
    var rx = /([^=]+)=([^&]+)&?/g;
    var matches = {};
    var match;
    while (match = rx.exec(string)) {
        matches[match[1]] = match[2];
    }
    return matches;
}

var st = 'name=cvbb&source=Mamma+Mia&startdate=2014-03-24';
var obj = params_match(st);
//{name: "cvbb", source: "Mamma+Mia", startdate: "2014-03-24"} 

受此答案啟發: https//stackoverflow.com/a/14210948/1076207


正則表達式:

看到這里: http : //rubular.com/r/E6Wuejs0bA

/([^=]+)=([^&]+)&?/

# Match 1
# 1.    name
# 2.    cvbb
#
# Match 2
# 1.    source
# 2.    Mamma+Mia
#
# Match 3
# 1.    startdate
# 2.    2014-03-24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM