使用javascript正则表达式匹配字符串

时间:2014-04-17 05:22:46

标签: javascript regex

我有以下字符串:

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

以下正则表达式匹配到startdate

(source=.*(startdate))

如何匹配字符串直到'&'米娅之后?

更新:

名= cvbb&安培;源=妈妈+米亚&安培; STARTDATE = 2014年3月24日&安培;日期= 2014年4月24日

我希望匹配发生直到&就在Mia之后

5 个答案:

答案 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 object

<强>使用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