Регулярное выражение для соответствия идентификатору изображения из URL-адреса - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующий URL:

https://res.cloudinary.com/frivillighet-norge/image/upload/v1501681528/5648f10ae4b09f27e34dd22a.jpg

, и я хочу сопоставить только идентификатор изображения в конце строки, не включая .jpg. До сих пор я написал что-то вроде этого: ^[A-Za-z0-9]{24}$, который соответствует строке чисел и букв длиной 24, поскольку мой идентификатор в строке всегда имеет длину 24, но это не работает, поскольку оно соответствует строкам длиной 24 только.

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 26 мая 2020
[A-Za-z0-9]{24}(?=(\.jpg))

"(? = (. Jpg))" - это поиск . Он завершает совпадение с расширением .jpg, но не включает его.

1 голос
/ 26 мая 2020

Вы можете сделать шаблон немного более конкретным c, сопоставив протокол, за которым следует сопоставление 1+ вхождений непробельного символа \S+.

Затем сопоставьте последнее вхождение / и захватить идентификатор, который состоит из 24 символов ([A-Za-z0-9]{24}), за которыми следует сопоставление точки и 2 или более раз char az \.[a-z]{2,}

Если вы хотите сопоставить всю строку, вы можете добавить якоря, чтобы подтвердить начало ^ и конец $ строки.

Идентификатор находится в группе захвата 1.

^https?:\/\/\S+\/([A-Za-z0-9]{24})\.[a-z]{2,}$

Regex demo

const regex = /https?:\/\/\S+\/([A-Za-z0-9]{24})\.\w+$/;
const str = `https://res.cloudinary.com/frivillighet-norge/image/upload/v1501681528/5648f10ae4b09f27e34dd22a.jpg`;

console.log(str.match(regex)[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...