我有以下字符串:
name=cvbb&source=Mamma+Mia&startdate=2014-03-24
以下正则表达式匹配到startdate
(source=.*(startdate))
如何匹配字符串直到'&'米娅之后?
更新:
名= cvbb&安培;源=妈妈+米亚&安培; STARTDATE = 2014年3月24日&安培;日期= 2014年4月24日
我希望匹配发生直到&就在Mia之后
答案 0 :(得分:1)
自you are planning to parse the data later以来,我建议您获取一个键值对数据,例如
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' }
答案 1 :(得分:0)
"name=cvbb&source=Mamma+Mia&startdate=2014-03-24".match(/source=([^&]+)/)[1]
答案 2 :(得分:0)
假设这些事情始终处于相同的顺序,(name=.*&)
应该这样做。
答案 3 :(得分:0)
使用正则表达式/.*&/
将匹配到最后&
。
更新了regexp:
/name=.*&source=[^&]*/
如果字符串以name=cvbb&source=Mamma+Mia
开头,而name
后面跟着source
,则将提供{{1}}。
答案 4 :(得分:0)
<强>使用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