我有ref = Apple 我目前的正则表达式是
var regex = /ref=(.+)/;
var ref = regex.exec(window.location.href);
alert(ref[0]);
但包括ref =
现在,我还想停止捕获字符,如果&在参考结束时。原因参考可能并不总是网址中的最后一个参数。
答案 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]);
答案 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]);