[英]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:
觀看現場演示: 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.