我正在尝试将正则表达式应用于字符串,以搜索任何占位符,但我无法弄清楚为什么结果只是完全匹配,而不是捕获组。
//----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
»小提琴
(我使用了我的自定义函数write
而不是console.log
结果会显示在小提琴中)
为什么第三行未定义?我不明白!
我很确定表达是正确的。我有 1oo% 确定这是 JavaScript 的正确捕获组语法,它.match()
首先返回一个完全匹配的数组,然后是所有捕获组。我什至用 regex101.com 对其进行了测试——在那里,我得到了捕获组。
这与其他问题不同,因为 OR 逻辑是问题的症结所在,而这里的管道|
甚至没有出现。