Как найти определенные части строки из большого текста с помощью регулярных выражений на JS?

Рейтинг: 1Ответов: 1Опубликовано: 05.04.2023

У меня есть текст типа этого:

const str = "font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype')";

мне нужно получить все ссылки на файлы внутри url в таком виде:

['../fonts/fontawesome-webfont.eot?v=4.7.0', '../fonts/fontawesome-webfont.eot?efix&v=4.7.0']

Как это можно сделать с помощью регулярных выражении?

Ответы

▲ 1Принят

Если формат входящих данных представлен верно и включает все возможные варианты, то выражение будет опираться на наличие url и скобок:

const sTXT = `font-family:'FontAwesome';
  src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');
  src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype');
  src:url(http://fonts.com/fontawesome-webfont.eot) format('embedded-opentype');
  src:url("../fonts/fontawesome-webfont.eot?v=4.7.0")
`;

const rEXP = /url\(("|')?(.+?)\1\)/g;

console.log( Array.from(sTXT.matchAll(rEXP), m => m[2]) );