Я предполагаю, что мы могли бы передать домен и зафиксировать несколько компонентов URL-адресов, таких как идентификатор.Давайте начнем с выражения с большим количеством границ, затем удалим их, если они нежелательны:
(.+?)(in.bookmyshow.com)\/(.+?)\/([A-Z0-9]+)(.*&)
RegEx
Если это выражение не нужно, его можно изменить или изменить в regex101.com .
Схема RegEx
jex.im также помогает визуализировать выражения.
Демонстрация
Этот фрагмент кода просто показывает, как работают группы захвата:
const regex = /(.+?)(in.bookmyshow.com)\/(.+?)\/([A-Z0-9]+)(.*&)/gm;
const str = `https://in.bookmyshow.com/bengaluru/movies/avengers-endgame/ET00090482&
https://in.bookmyshow.com/movies/the-tashkent-files/ET00069063/&`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Если мы хотим передать URL-адреса, имеющие movies
, и пропустить те, у которых их нет, мы можем добавить новую границу к нашему начальному выражению:
(.+?)(in.bookmyshow.com)\/(.+)?movies(.+)?\/([A-Z0-9]+)(.*&)
const regex = /(.+?)(in.bookmyshow.com)\/(.+)?movies(.+)?\/([A-Z0-9]+)(.*&)/gm;
const str = `https://in.bookmyshow.com/bengaluru/movies/avengers-endgame/ET00090482&
https://in.bookmyshow.com/movies/the-tashkent-files/ET00069063/&
https://in.bookmyshow.com/music/the-tashkent-files/ET00069063/&
https://in.bookmyshow.com/bengaluru/music/the-tashkent-files/ET00069063/&`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}