Как работает match с регулярным выражением в JavaScript?

Имеется следующий JavaScript-код:

var testStr = "Вчера я открыл 5 сайтов: www.mysite.ru, https://my-super-4an.ru, www.mysite.com, http://spuper-site.ru и Biggsite.Ru но вообще, мне больше нравиться домен в зоне .ru";
var rgeV = /\.ru/gi;
var result = testStr.match(regV);
for(i = 0; i < result.length; i++){
  document.write('<p>'+result[i]+'</p>');
}
Вопрос: "var result" - это массив? Но как же он может быть массивом, если у него нет текста. Запустил цикл с ".length". Как ".length" может распознать сколько символов в "result", если у него нет ни каких символов?

Комментарии: 2

Александр Мальцев
Александр Мальцев
Askar, в переменной result у Вас находится массив.
1. Текст, у Вас находится в переменной testStr.
2. В переменной regV находится регулярное выражение.
3. Переменной result метод match возвращает массив, состоящий из совпадений строки testStr с регулярным выражением regV. Массив возвращается потому что регулярное выражение содержит ключ g. Т.е. в элементах массива у Вас находятся все найденные результаты (подстроки).
var testStr = "Вчера я открыл 5 сайтов: www.mysite.ru, my-super-4an.ru, www.mysite.com, spuper-site.ru и Biggsite.Ru но вообще, мне больше нравиться домен в зоне .ru";  //строка
var regV = /\.ru/gi; //регулярное выражение
var result = testStr.match(regV); //возвращает массив, т.к. в регулярном выражении есть флаг g. Кроме этого есть ещё и флаг i (регистр при поиске будет игнорироваться) //этот флаг g и обозначает что у Вас будет массив
for(i = 0; i < result.length; i++) {
  ...
}
Askar
Askar
Спасибо за ответ