正则表达式 - 直到达到特定字符

时间:2015-04-10 14:54:48

标签: regex

因此,对于www.test.com?pageToken=xyz&foo=bar,我希望获得pageToken及其值&; 我已经尝试了/(pageToken=).*[^&]/g但仍然获得了所有pageToken=xyz&foo=bar而不是pageToken=xyz。我做错了什么?

2 个答案:

答案 0 :(得分:2)

你需要删除贪婪地匹配任何零个或多个字符的中间.*,然后使用否定字符类[^&]*匹配任何字符,但不匹配&,零个或多个次。

(pageToken)=([^&]*)

DEMO

答案 1 :(得分:0)

由于.*,你的正则表达式过于贪婪。但是,要获取参数值,您可以使用特定功能。这是你可以使用的一个:

function getParameterByName(location, name) {
        name = name.replace(/\]/g, "\\\]").replace(/\[/g, "\\\[");
        var regex = new RegExp("[\/\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location);
        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }

    document.getElementById("res").innerHTML = getParameterByName("www.test.com/pageToken=xyz&foo=bar", "pageToken");
<div id="res" />

只需更改name即可从您的字符串中获取所需的参数值。