match () возвращает массив с двумя совпадениями, когда я ожидаю одно совпадение

Рассмотрим следующий пример:

<html>
<body>

<script type="text/javascript">

var str="filename.jpg";

var pattOne = new RegExp('\.[^\.]*$');
var pattTwo = new RegExp('(\.[^\.]*$)');
var pattThree = new RegExp('(\.[^\.]*$)', 'g');

document.write(str.match(pattOne));
document.write('<br>');
document.write(str.match(pattTwo));
document.write('<br>');
document.write(str.match(pattThree));

</script>
</body>
</html>

Вот результат:

.jpg
.jpg,.jpg
.jpg

Я ожидаю такого результата:

.jpg
.jpg
.jpg

Почему заключение круглых скобок вокруг регулярного выражения меняет результат? Почему использование модификатора 'g' снова меняет результат?

16
задан Rahil Wazir 15 October 2014 в 16:52
поделиться