#javascript #regex #match
#javascript #регулярное выражение #совпадение
Вопрос:
Попробуйте
<script type="text/javascript">
var str=">1 people>9 people>1u people";
document.write(str.match(/>.*people/img).length);
</script>
в http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_dot .
Этот код должен возвращать массив размером 3, но возвращает массив размером 1.
В чем проблема?
Ответ №1:
.*
Часть вашего регулярного выражения является «жадной» и принимает столько символов, сколько может, в этом случае возвращая всю строку как одно совпадение.
Вместо этого напишите его так, с завершающим ?
:
str.match(/>.*?people/img)
См. Раздел, описывающий «?» в справочнике JS Mozilla Developer Network.