Я добавил несколько групп захвата к этому выражению , чтобы его было легко изменить / изменить и понять:
^((https?:\/\/.*)(worldstarhiphop.com)((\/apple\/video.php\?v=)|\/videos\/video.php\?v=)([A-Za-z0-9]{20}))
Я не закрывал правую сторону, используя $
, чтоВы можете сделать это, если хотите.
URL-адреса, которые вы хотите сопоставить, представлены в двух мобильных и веб-версиях, которые я добавил на всякий случай для обоих протоколов.Если это не нужно, вы можете удалить его.
![enter image description here](https://i.stack.imgur.com/oR4Hy.png)
Описательный график RegEx
График показывает, как он работает, и вы можете проверить другие выражения в этой ссылке :
![enter image description here](https://i.stack.imgur.com/4PJ7l.png)
Базовый тест производительности
Этот фрагмент JavaScript возвращает время выполнения цикла for
в миллион раз дляпроизводительность.
const repeat = 1000000;
const start = Date.now();
for (var i = repeat; i >= 0; i--) {
const string = 'https://m.worldstarhiphop.com/apple/video.php?v=wshhc8Ew271C2BZE0l31';
const regex = /^((https?:\/\/.*)(worldstarhiphop.com)((\/apple\/video.php\?v=)|\/videos\/video.php\?v=)([A-Za-z0-9]{20}))/gm;
var match = string.replace(regex, "\nGroup #1: $1\nGroup #2: $2 \nGroup #3: $3 \nGroup #4: $4\nGroup #6: $6 \n");
}
const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match ??? ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ? ");