Не удалось получить совпадающий результат из строки с помощью регулярных выражений в реагировать на нативный, но получить его в консоли Crome - PullRequest
0 голосов
/ 25 марта 2020
let regex=/(\d*(,|\.)?\d)(.)*(\s+followers)/g;
let result=regex.exec("<div class=\"Content EmbedFrame\" style=\"\">\n" +
          "<a class=\"EmbeddedMedia\" href=\"https://www.instagram.com/p/tsxp1hhQTG/?utm_source=ig_embed&amp;ig_mid=93153B6F-2C77-4A9A-946F-3405DC4F16BA\" data-ios-link=\"media?id=823251211150230726&amp;utm_source=ig_embed&amp;ig_mid=93153B6F-2C77-4A9A-946F-3405DC4F16BA\" data-log-event=\"mediaClick\" target=\"_blank\">\n" +
          "<img class=\"EmbeddedMediaImage\" src=\"https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6\" srcset=\"https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 640w,https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 750w,https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 1080w\" />\n" +
          "\n" +
          "</a>\n" +
          "<span class=\"FollowerCountText\">\n" +
          "339.7m followers\n" +
          "</span>\n" +
          "</div>\n");
console.log(result)

В приведенном выше блоке кода не найдено совпадений в реагировать на натив, но получаются ["339.7m последователей", "339.7", ".", "M", "последователей"] В консоли Chrome , Это просто JS и, по моему мнению, должно работать одинаково в обоих местах.

Я что-то не так сделал?

1 Ответ

1 голос
/ 25 марта 2020

Возможно, вместо использования регулярных выражений, вы могли бы сначала использовать DOMParser и селектор запросов div.Content.EmbedFrame span.FollowerCountText

let html = `<div class="Content EmbedFrame" style="">
<a class="EmbeddedMedia" href="https://www.instagram.com/p/tsxp1hhQTG/?utm_source=ig_embed&amp;ig_mid=93153B6F-2C77-4A9A-946F-3405DC4F16BA" data-ios-link="media?id=823251211150230726&amp;utm_source=ig_embed&amp;ig_mid=93153B6F-2C77-4A9A-946F-3405DC4F16BA" data-log-event="mediaClick" target="_blank">
<img class="EmbeddedMediaImage" src="https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6" srcset="https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 640w,https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 750w,https://scontent-atl3-1.cdninstagram.com/v/t51.2885-15/e15/1538350_1528374764070564_1190643161_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com&amp;_nc_cat=100&amp;_nc_ohc=QazMmTOnHP0AX85I8r7&amp;oh=e504703e829858339c69701b46f119e4&amp;oe=5EA354E6 1080w" />

</a>
<span class="FollowerCountText">
339.7m followers
</span>
</div>`;


let pattern = /(\d*([,.])?\d)(.)*(\s+followers)/;
let parser = new DOMParser();
let doc = parser.parseFromString(html, "text/html");
let span = doc.querySelector("div.Content.EmbedFrame span.FollowerCountText");
console.log(span.innerHTML.trim());
console.log(span.innerHTML.trim().match(pattern));

Тогда, если вы хотите использовать свой шаблон, вы можете сократить чередование до класса символов для , и .

(\d*([,.])?\d)(.)*(\s+followers)

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...