Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 如何编写regexp从URL获取参数_Javascript_Regex - Fatal编程技术网

Javascript 如何编写regexp从URL获取参数

Javascript 如何编写regexp从URL获取参数,javascript,regex,Javascript,Regex,我需要有关regexp的帮助,以便仅从此url获取代码参数: URL: code=4%2FsAB_thYuaw3b12R0eLklKlc-qcvNg6f8E8pgvu_02MTTJE0NOcyvXkrTQrB3QK8209wSbIpLDEBrk8vUGYKQ41I&scope=https:..... 我的代码: getParameterByName(name) { var url = window.location.href; name = name.replace(/

我需要有关regexp的帮助,以便仅从此url获取代码参数:

URL: code=4%2FsAB_thYuaw3b12R0eLklKlc-qcvNg6f8E8pgvu_02MTTJE0NOcyvXkrTQrB3QK8209wSbIpLDEBrk8vUGYKQ41I&scope=https:.....
我的代码:

getParameterByName(name) {
    var url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$|)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
这段代码正在返回`

4/sAB_thYuaw3b12R0eLklKlc-qcvNg6f8E8pgvu_02MTTJE0NOcyvXkrTQrB3QK8209wSbIpLDEBrk8vUGYKQ41I
在这种情况下,我需要将第一个也是唯一一个反斜杠改为%号

我不能让它工作


提前通知

未经测试的JavaScript正则表达式:

var myRe = /=(.*)&/igm
var url = 'code=4%2FsAB_thYuaw3b12R0eLklKlc-qcvNg6f8E8pgvu_02MTTJE0NOcyvXkrTQrB3QK8209wSbIpLDEBrk8vUGYKQ41I&scope=https:';
var code = myRe.exec(url);
它对我有用

function getUrlParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
使用
\bcode=([^&]+)
。它一定要使用单词边界“code=”获取代码查询,然后捕获任何字符,直到到达
&
或结尾


这里测试正则表达式:

我不确定我是否完全理解您要做的事情,但是如果您只是想要“code=”和下一个“&“try”code=([^&]*)”之间的所有内容,我假设您有理由不这样做,如果是,对不起。{1,}是否添加了任何内容到*?@标记是<代码>{1,}确保它在1和无限之间匹配<代码>*可以在零和无限之间匹配。所以,如果您使用
*
量词,并使用测试用例
code=
,那么在捕获组中将有一个空字符串。因此,拥有
{1,}
有助于防止出现空字符串。@LuisEstevez well
+
做了同样的事情
{1,}
。因此,如果要匹配一个或多个,可以使用
+
。demo@CodeManiac啊,是的,谢谢!我现在就用这个:)我知道,我只是在寻找一个现实世界的案例,在这里这很重要。唯一的区别是代码=&。。。我的版本生成一个空的匹配组,而你的版本不生成匹配。但这也是一个带有查询的错误url,所以…我喜欢这个,因为你用KENUBBE的格式回答了它,尽管事实上KENUBBE可以用一个正则表达式而不使用替换或任何其他操作。这就是为什么我被这个问题弄糊涂了-他的代码太复杂了,我想我一定遗漏了什么。