2017-01-27 6 views
2

У меня есть такой пример: https://jsfiddle.net/xqdwL914/1/Javascript отсчет длины строки матч

<div id="test">bar <i>def</i>ghij<br>bar <i>def</i>ghij</div> 

Я Хочу найти «бар» индекс и длину в многоканальном возникновения так:

var node = document.getElementById('test'); 
var text = node.textContent; 
var re = /bar/g; 
while ((match = re.exec(text)) != null) { 

alert("match found at: " + match.index+ " length: " +match.length); 

} 

выход:

матч найден в: 0 длина: 1

матч найден в: 11 leng th: 1

Почему длина «1» должна быть «3» в виде трех символов слова «бар» и как я получаю последний индекс каждой строки слов соответствия ????

+0

так, как я бы рассчитывать на каждой итерации ?? – jsem

+0

, когда я использую его следующим образом: alert ("match found at:" + match.index + "length:" + text.match (re) .length); это зацикливание бесконечности .. – jsem

ответ

0

От MDN

Если матч завершается успешно, ехес() метод возвращает массив и обновляет свойства объекта регулярного выражения. Возвращаемый массив имеет совпадающий текст в качестве первого элемента

var text = 'bar <i>def</i>ghij<br>bar <i>def</i>ghij'; 
var re = /bar/g; 
while ((match = re.exec(text)) != null) { 
    console.log("match found at: " + match.index+ " length: " +match[0].length); 
} 

выход:

match found at: 0 length: 3 
match found at: 22 length: 3 
0

Восстановленный match - это массив. Я понимаю, что вы ищете длину match строки в первой позиции (match[0]):

while ((match = re.exec(text)) != null) { 
    alert("match found at: " + match.index+ " length: " +match[0].length); 
} 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^