Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery代码不起作用?_Javascript_Jquery_Regex_Replace_Match - Fatal编程技术网

Javascript 为什么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

为什么以下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
,然后仅检索数字?

如果您是新加入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: