Regex для захвата изображения src атрибут - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь извлечь все ссылки на изображения в двойных кавычках.

Я могу получить текст в кавычках, используя

/"([^"]*)"/

, но хочу получить только эти значениякоторые соответствуют следующему шаблону

"https://text/text/.../text.jpg?text=text&text=..."

(... Представляет похожие значения)

Как этого добиться?

Ответы [ 3 ]

2 голосов
/ 21 мая 2019

Если URL-адрес должен начинаться с http и необязательных s, и он должен содержать .jpg, вы можете сделать свой шаблон более конкретным:

"(https?:\/\/[^"\s]+\/\S+?\.jpg[^"\s]*)"
  • "( Открытие матча "и начало захвата группы
    • https?:\/\/ Соответствует http с необязательными s и: //
    • [^"\s]+ Match not "или символ пробела
    • \/\S+?\.jpg Соответствует прямой косой черте, 1+ раз без непропускного символа, не жадного и .jpg
    • [^"\s]* Совпадение 0+ раз, не символ пробела или ", чтобы соответствовать тому, что следует за расширением файла
  • )" Закрыть группу захвата и закрыть матч "

Regex demo

let pattern = /"(https?:\/\/[^"\s]+\/\S+?\.jpg[^"\s]*)"/;
[
  '"https://text/text/.../text.jpg?text=text&text=..."',
  '"https://text/text/.../text.jpg?t&ext=text&text=..."',
  '"https://text/text/.../text.jpg?text=text"'
].forEach(s => console.log(s.match(pattern)[1]))
0 голосов
/ 20 мая 2019

Ваше испытание довольно хорошее. Здесь мы также можем использовать простую левую и правую границу " и собирать данные между ними:

"(.+?)"

Демо

const regex = /"(.+?)"/gm;
const str = `"https://text/text/........./text<b>.jpg?text=text&text=.......</b>"`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);
0 голосов
/ 20 мая 2019
/['"]+/g 

должно работать

let urlStr= "https://text/text/........./text.jpg?text=text&text=.......';
console.log(urlStr.replace(/['"]+/g, ''));
...