Javascript 为什么jQuery代码不起作用?
为什么以下jQuery代码不起作用Javascript 为什么jQuery代码不起作用?,javascript,jquery,regex,replace,match,Javascript,Jquery,Regex,Replace,Match,为什么以下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 a
$(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
,然后仅检索数字?如果您是新加入Regex的,为什么不试试呢
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'));
如何使用读取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'));
请考虑改用以下代码:
$(function() {
var matches = window.location.href.match(/\?fb=([0-9]+)/i);
if (matches) {
var number = matches[1];
alert(number); // will alert 4!
}
});
在此测试一个示例:
正则表达式仅对您提供的内容稍作修改。g
lobal标志已被删除,因为您不会有多个fb=
要匹配(否则您的URL将无效!)。已添加案例i
n敏感标志,以匹配FB=
以及FB=
这个数字用花括号括起来表示a,这是一种魔力,它允许我们使用匹配
如果匹配我们指定的正则表达式,它将在第一个数组元素中返回匹配的字符串。其余元素包含我们定义的每个捕获组的值
在我们正在运行的示例中,字符串“?fb=4”是匹配的,返回数组的第一个值也是匹配的。我们定义的唯一捕获组是数字匹配器;这就是第二个元素中包含4
的原因。请考虑使用以下代码:
$(function() {
var matches = window.location.href.match(/\?fb=([0-9]+)/i);
if (matches) {
var number = matches[1];
alert(number); // will alert 4!
}
});
在此测试一个示例:
正则表达式仅对您提供的内容稍作修改。g
lobal标志已被删除,因为您不会有多个fb=
要匹配(否则您的URL将无效!)。已添加案例i
n敏感标志,以匹配FB=
以及FB=
这个数字用花括号括起来表示a,这是一种魔力,它允许我们使用匹配
如果匹配我们指定的正则表达式,它将在第一个数组元素中返回匹配的字符串。其余元素包含我们定义的每个捕获组的值
在我们正在运行的示例中,字符串“?fb=4”是匹配的,返回数组的第一个值也是匹配的。我们定义的唯一捕获组是数字匹配器;这就是第二个元素中包含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
}
如果您只需要获取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
}
那么,您想输入一个querystring,然后根据参数获取它的值吗
我曾有过一个半心半意的提议
但后来我看到了
当你这样做的时候,就这样调用函数
getParameterByName("fb")
那么,您想输入一个querystring,然后根据参数获取它的值吗
我曾有过一个半心半意的提议
但后来我看到了
当你这样做的时候,就这样调用函数
getParameterByName("fb")
我对regex非常陌生,只是今天我的手指被它弄脏了,所以看着那里的代码我根本不知道如何实现它。哈哈。我对regex非常陌生,只是今天我的手指被它弄脏了,所以看着那里的代码我根本不知道如何实现它。谢谢,介意解释一下它到底是如何工作的吗?匹配项上的数组是什么?更好的方法是在窗口.location.search
上搜索,这样就不会意外地匹配路径或散列中的子字符串。match
返回匹配项数组。@tfbox/\?fb=([0-9]+)/i
创建一个“捕获组”。String.match()返回的数组中有与该捕获组的模式匹配的子字符串。索引0是匹配的整个字符串,1..N是匹配每个捕获组的子字符串。谢谢,您能解释一下它是如何工作的吗?匹配项上的数组是什么?更好的方法是在窗口.location.search
上搜索,这样就不会意外地匹配路径或散列中的子字符串。match
返回匹配项数组。@tfbox/\?fb=([0-9]+)/i
创建一个“捕获组”。String.match()返回的数组中有与该捕获组的模式匹配的子字符串。索引0是整个匹配的字符串,1..N是匹配每个捕获组的子字符串。JSLint不处理jQuery:谢谢Ben,我实际上不知道。在我回答之前,我将从现在开始使用这些资源。我部分撒谎了。。。事实证明,如果您在本地运行Lint,jquerycore实际上会传递Lint:JSLint不会处理jQuery:谢谢Ben,实际上我不知道。在我回答之前,我将从现在开始使用这些资源。我部分撒谎了。。。事实证明,如果您在本地运行Lint,jQuery核心实际上会传递Lint: