javascript 中的正则表达式非捕获组

2023-11-27

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

var subject = "javascript:loadNewsItemWithIndex(5, null);";

我想提取5使用正则表达式。这是我的正则表达式:

/(?:loadNewsItemWithIndex\()[0-9]+/)

像这样应用:

subject.match(/(?:loadNewsItemWithIndex\()[0-9]+/)

结果是:

loadNewsItemWithIndex(5

什么是最干净、最易读的提取方式5作为单行?是否可以通过排除来做到这一点loadNewsItemWithIndex(来自匹配而不是匹配5作为一个子组?


返回值来自String.match是一个匹配数组,因此您可以在数字部分两边加上括号,然后只检索特定的匹配索引(其中第一个匹配是整个匹配结果,后续条目针对每个捕获组):

var subject = "javascript:loadNewsItemWithIndex(5, null);";
var result = subject.match(/loadNewsItemWithIndex\(([0-9]+)/);
                                    //             ^      ^  added parens
document.writeln(result[1]);
                  //    ^ retrieve second match (1 in 0-based indexing)

示例代码:http://jsfiddle.net/LT62w/

Edit:感谢@Alan 对非捕获匹配如何工作的更正。

事实上,它运行得很好。在 a 内匹配的文本 非捕获组仍然被消耗,与匹配的文本相同 任何团体之外。捕获组就像非捕获组 具有额外的功能:除了分组之外,它还允许您 独立于整体匹配提取匹配的任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 中的正则表达式非捕获组 的相关文章