为什么以下jQuery代码不起作用?
$(function() {
var regex = /\?fb=[0-9]+/g;
var input = window.location.href;
var scrape = input.match(regex); // returns ?fb=4
var numeral = /\?fb=/g;
scrape.replace(numeral,'');
alert(scrape); // Should alert the number?
});
基本上我有这样的链接:
http://foo.com/?fb=4
如何首先找到?fb=4
,然后只检索号码?
答案 0 :(得分:5)
请考虑使用以下代码:
$(function() {
var matches = window.location.href.match(/\?fb=([0-9]+)/i);
if (matches) {
var number = matches[1];
alert(number); // will alert 4!
}
});
在此测试一个示例:http://jsfiddle.net/GLAXS/
正则表达式仅根据您提供的内容略微修改。已删除g
小标记,因为您不会有多个fb=
匹配(否则您的网址无效!)。已添加案例i
nsensitive flag flag以匹配FB=
以及fb=
。
数字用大括号括起来表示capturing group,这是允许我们使用match
的魔法。
如果match
与我们指定的正则表达式匹配,它将在第一个数组元素中返回匹配的字符串。其余元素包含我们定义的每个捕获组的值。
在我们的运行示例中,字符串“?fb = 4”匹配,返回数组的第一个值也匹配。我们定义的唯一捕获组是数字匹配器;这就是4
包含在第二个元素中的原因。
答案 1 :(得分:4)
如果您只需要获取fb
的值,只需使用捕获括号:
var regex = /\?fb=([0-9]+)/g;
var input = window.location.href;
var tokens = regex.exec(input);
if (tokens) { // there's a match
alert(tokens[1]); // grab first captured token
}
答案 2 :(得分:2)
如何使用following function读取JavaScript中的查询字符串参数:
function getQuerystring(key, default_) {
if (default_==null)
default_="";
key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
var qs = regex.exec(window.location.href);
if(qs == null)
return default_;
else
return qs[1];
}
然后:
alert(getQuerystring('fb'));
答案 3 :(得分:2)
那么,您想要提供查询字符串,然后根据参数获取其值吗?
我有半心半意提供 Get query string values in JavaScript 。
但后来我看到a small kid abusing a much respectful Stack Overflow answer。
// Revised, cooler.
function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)')
.exec(window.location.search);
return match ?
decodeURIComponent(match[1].replace(/\+/g, ' '))
: null;
}
当你在这里时,只需要调用这个函数。
getParameterByName("fb")
答案 4 :(得分:-3)
如果您是Regex的新手,为什么不试试Program that illustrates the ins and outs of Regular Expressions