Я пытаюсь применить регулярное выражение к строке в поисках любых заполнителей, но не могу понять, почему результатом является только полное совпадение, а не группа захвата.
//----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
, чтобы результат отображал на скрипке)
Почему третья строка не определена? Я не понимаю!
Я довольно уверен, что выражение правильное. Я на 100% уверен, что это правильный синтаксис группы захвата для JavaScript, и что .match()
сначала возвращает массив с полным совпадением, а затем все группы захвата. Я даже проверил это с regex101.com — там я получаю группу захвата.
Это не то же самое, что эта другая проблема, потому что , суть проблемы заключалась в логике ИЛИ, а здесь труба |
даже не всплывает.
g
как причину того, что.match()
не возвращает группы захвата. - person WoodrowShigeru   schedule 16.11.2015