我对我的正则表达式和 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(使用前将#替换为@)