仍然在比赛中表现出来的比赛

我知道这个主题已经在StackOverflow中得到了全面的介绍,但是我不能让我的正则表达式正常工作。 所以没有进一步的重复劳动


这是我的。

字符串: <p model='cat'></p>

正则表达式: .match(/(?:model=')(.*)(?:')/g)

这就是我的表达式返回的结果: model='cat'

这就是我想要的: cat


为什么我的非捕获组不被忽略? 难道我不明白什么是非捕获组织? 为什么我的正则表达式不工作?


整个比赛将始终是第0组,您需要访问该特定组(在这种情况下为第1组,因为第一组未捕获),您可以这样做:

var str = "<p model='cat'></p>";
var regex = /(?:model=')(.*)(?:')/g
var match = regex.exec(str);
alert(match[1]);  // cat

小提琴

另外,我想你可能想要在str中打几场比赛,你可以这样做:

var str = "<p model='cat'></p><p model='dog'></p><p model='horse'></p>";
var regex = /(?:model=')([^']*)/g
var matches = [];
var match;
while (match = regex.exec(str)) {
    matches.push(match[1]);
}
alert(matches); // cat,dog,horse

小提琴

链接地址: http://www.djcxy.com/p/74783.html

上一篇: capture group still showing in match

下一篇: Regex group capture in R with multiple capture