1

次のような文字列があります。

var x = "test/foo/4/bar/3"

そして私にはパターンがあります

var y = "test/foo/{id}/bar/{age}"

パターンを使用して変数「x」から数値4と3を抽出する正規表現を使用することは可能ですか?

4

2 に答える 2

6

文字列形式がその形式であることが予測できる場合は、正規表現を避けることをお勧めします。

var str = "test/foo/4/bar/3",
    parts = str.split('/'),
    id = parts[2],
    age = parts[4];

JS フィドルのデモ

ただし、本当に正規表現を使用する必要があると感じた場合(そして、作業が複雑になった場合) は、次の可能性があります。

var str = "test/foo/4/bar/3",
    parts = str.split('/'),
    id = str.match(/\/(\d+)\//)[1],
    age = str.match(/\/(\d+)$/)[1];
console.log(id,age);

JS フィドルのデモ

参考文献:

于 2013-06-24T21:11:04.830 に答える
0

一定でないパターンがあり、パターンが「test/name1/value1/name2/value2」の場合は、これを確認してください。

function match(url, variables) {
    /* regexp */
    function MatchRE(variable) {
        return new RegExp("/" + variable + "\\/([^\\/]+)");
    }

    var regExp, result = {};
    for (var i=0; i<variables.length; i++) {
        regExp = new MatchRE(variables[i]);
        if (regExp.test(url)) {
            result[variables[i]] = RegExp.$1;
        }
    }
    return result;
}

example:
    match("test/foo/4/bar/3", ["foo", "bar"]); //Object {foo: "4"}
    match("test/foo/testValue1/bar/testValue2/buz/testValue3", ["foo", "buz"]); //Object {foo: "testValue1", buz: "testValue3"}
于 2013-06-24T22:06:35.020 に答える