如何捕捉其他东西后的东西?像referer = someString

时间:2010-08-30 16:35:46

标签: javascript regex

我有ref = Apple 我目前的正则表达式是

    var regex = /ref=(.+)/;
    var ref = regex.exec(window.location.href);
    alert(ref[0]);

但包括ref =

现在,我还想停止捕获字符,如果&在参考结束时。原因参考可能并不总是网址中的最后一个参数。

5 个答案:

答案 0 :(得分:3)

您需要拆分网址参数,而不是使用正则表达式。

类似的东西:

var get = window.location.href.split('?')[1];
var params = get.split('&');
for (p in params) {
    var key = params[p].split('=')[0];
    var value = params[p].split('=')[1];

    if (key == 'ref') {
        alert('ref is ' + value);
    }
}

答案 1 :(得分:2)

改为使用ref[1]

这将访问模式中组1捕获的内容。

请注意,几乎可以肯定,在Javascript中进行键/值解析比使用正则表达式更好。

参考

答案 2 :(得分:1)

仅捕获单词字符和数字:

var regex = /ref=(\w+)/;
var ref = regex.exec(window.location.href);
alert(ref[1]);

捕获单词字符,数字, - 和_:

var regex = /ref=([\w_\-]+)/;
var ref = regex.exec(window.location.href);
alert(ref[1]);

More information about Regular Expressions (the basics)

答案 3 :(得分:1)

你使用的是ref错误,你应该对(.+)使用ref [1],ref[0]就是整场比赛。 如果&在最后,请将正则表达式修改为/ref=([^&]+)/,以排除&。 另外,请确保您在网址中对代码进行了urldecode(unescape)。

答案 4 :(得分:0)

试试这个正则表达式模式ref =(。*?)&

此模式将匹配ref =之后的任何内容,并在'&'

之前停止

要获取m的值,只需使用以下代码:

var regex = / ref =(。*?)& /;

var ref = regex.exec(window.location.href);

警报(参考文献[1]);