匹配不返回捕获组

时间:2015-11-14 19:40:20

标签: javascript regex capturing-group

我正在尝试将正则表达式应用于字符串,以搜索任何占位符,但我无法弄清楚为什么结果只是完全匹配,而不是捕获组。

//----HTML------------------------//    
<p>Let's try plaintext.<br/>
bommdidumpidudidoo</p>

<p id="output"></p>

//----JS------------------------//    
var s = $('p').html();
var matches = s.match( /.*(plaintext)/g );

write(matches);
write(matches[0]);
write(matches[1]);



//------- whatever -------//
function write(s) {
    $('#output').html( $('#output').html() +'<br/>'+s );
}

// output:
// Let's try plaintext
// Let's try plaintext
// undefined

»fiddle
(我使用自定义函数write代替console.log,以便结果显示在小提琴中)

为什么第三行未定义?我不明白!

非常确定表达是正确的。我确定这是JavaScript的正确捕获组语法,.match()首先返回一个完全匹配的数组,然后返回所有捕获组。我甚至用regex101.com对它进行了测试 - 在那里,我确实得到了捕获组。

它与this other problem不同,因为在那里,OR逻辑是问题的症结所在,管道|甚至没有出现。

1 个答案:

答案 0 :(得分:0)

哦!这是因为我正在使用g修饰符进行全局搜索。如果删除该修饰符,我会得到预期的结果。 TSS。

我首先使用了这个修饰符来获取多个占位符,但我想我仍然可以循环这些东西......