gpt4 book ai didi

Javascript 正则表达式和非捕获括号

转载 作者:搜寻专家 更新时间:2023-11-01 05:14:54 24 4
gpt4 key购买 nike

我对正则表达式和 Javascript 有点生疏。我有以下字符串变量:

var subject = "/admin.php?page=settings&tabs_added[114787535263592]=1&tabs_added[217770811582323]=1&tabs_added[198738186831542]=1"

我想提取 114787535263592217770811582323198738186831542

我尝试使用非捕获括号 (?:) :

var regexp = /(?:tabs_added[\[])(\d)+(?:[\]])/;
var pageid = regexp.exec(subject);

但我得到的结果 (["tabs_added[114787535263592]", "2"]) 并不是我所期望的——我做错了什么?这是一个 jsFiddle:http://jsfiddle.net/KgpAw/

最佳答案

你们很亲密。您还需要捕获 +。否则你只能捕获一位小数:

var regexp = /(?:tabs_added[\[])(\

您还应该使您的正则表达式全局以查找所有匹配项:

var regexp = /(?:tabs_added[\[])(\d+)(?:[\]])/g;

然后你应该遍历结果,你也不需要非捕获组,因为你没有在它们上使用量词 (?, +*),也不需要将 [] 放在字符类中:

var regexp = /tabs_added\[(\d+)\]/g;
var result;
while(null != (result = regexp.exec(subject))){
document.write(result[1] + '<br />');
}

JSFiddle Example

注意:使用 console.log 进行调试比使用 document.write 更好,只要您有可用的控制台。 (Chrome、Opera、IE9 和 Firefox 都内置了控制台,我认为 Safari 也有,所以您应该有一个可用的控制台。)console.log 在记录对象和数组时提供了更多有值(value)的信息。

关于Javascript 正则表达式和非捕获括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9927465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com