Совпадение регулярных выражений Javascript

#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.