2015-11-14 2 views
-1

Я пытаюсь применить регулярное выражение к строке в поисках любых заполнителей, но не могу понять, почему результатом является только полное совпадение, а не группа захвата.совпадение не возвращает группу захвата

//----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, потому что там логика ИЛИ была основной проблемой, и здесь труба | даже не появилась.

+0

что другой поток связан, но как это дубликат? Я также не спрашивал о кавычках, и ни один из ответов не указывал модификатор 'g' как причину для' .match() 'не возвращать группы захвата. – WoodrowShigeru

ответ

0

Oooh! Это потому, что я делаю глобальный поиск с модификатором g. Я получаю ожидаемый результат, если удалю этот модификатор. Тсс.

Я использовал этот модификатор в первую очередь для того, чтобы захватить несколько заполнителей, но я предполагаю, что я могу еще пока-цикла, что материал ...