Javascript 如何编写regexp从URL获取参数
我需要有关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(/
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可以用一个正则表达式而不使用替换或任何其他操作。这就是为什么我被这个问题弄糊涂了-他的代码太复杂了,我想我一定遗漏了什么。