Я пытаюсь применить регулярное выражение к строке в поисках любых заполнителей, но не могу понять, почему результатом является только полное совпадение, а не группа захвата.совпадение не возвращает группу захвата
//----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
так, что результат будет отображаться в скрипке)
Почему третья строка не определена? Я не понимаю!
Я довольно уверен, что это правильно. Я уверен в 1oo%, что это правильный синтаксис группы захвата для JavaScript, и что .match()
возвращает массив с полным совпадением сначала, а затем все группы захвата. Я даже проверил его с regex101.com - там, я получаю группу захвата.
Это не то же самое, что this other problem, потому что там логика ИЛИ была основной проблемой, и здесь труба |
даже не появилась.
что другой поток связан, но как это дубликат? Я также не спрашивал о кавычках, и ни один из ответов не указывал модификатор 'g' как причину для' .match() 'не возвращать группы захвата. – WoodrowShigeru