const regex = new RegExp('(?#remove next set of parenthesis and content because its only for simulating automod)(^|\\W|\\b)(?<!player\\.)(?<!blog\\.)(?<!dev\\.)(?<!link\\.)(?<!affiliate\\.)(?<!meetups\\.)(?<!help\\.)(?<!safety\\.)(?<!devstatus\\.)(?<!brand\\.)(?<!sings\\.)(?<!music\\.)twitch\\.tv\\/(?!embed(\\/|\\b)|subs(\\/|\\b)|directory(\\/|\\b)|p\\/|user(\\/|\\b)|legal(\\/|\\b)|admin(\\/|\\b)|login(\\/|\\b)|signup(\\/|\\b)|jobs(\\/|\\b)|videos(\\/|\\b)|collections(\\/|\\b)|downloads(\\/|\\b)|turbo(\\/|\\b)|store(\\/|\\b)|creatorcamp(\\/|\\b)|settings(\\/|\\b)|giftcard(\\/|\\b)|redeem(\\/|\\b)|broadcast(\\/|\\b)|partner(\\/|\\b)|bits(\\/|\\b)|prime(\\/|\\b))(\\w+)\\/?(?!\\S)(?#remove next set of parenthesis and content because its only for simulating automod)($|\\W|\\b)', 'gis')
const str = `https://www.twitch.tv/miametzmusic
https://www.twitch.tv/miametzmusic
https://twitch.tv/summit1g
https://twitch.tv/summit1g/
https://www.twitch.tv/subsp00ky
https://www.twitch.tv/subsp00ky/
https://player.twitch.tv/js/embed/v1.js
https://player.twitch.tv/?channel=miametzmusic&parent=www.example.com
https://www.twitch.tv/embed/miametzmusic/chat?parent=www.example.com
https://www.twitch.tv/subs
https://www.twitch.tv/subs/miametzmusic
https://www.twitch.tv/directory
https://www.twitch.tv/directory/all/tags/classical
https://www.twitch.tv/miametzmusic/about
https://www.twitch.tv/miametzmusic/schedule
https://www.twitch.tv/miametzmusic/videos
https://www.twitch.tv/videos/1821013434
https://www.twitch.tv/videos/1821013434?t=00h00m13s
https://www.twitch.tv/collections/EwAtC1IWzhY3Ww
https://www.twitch.tv/videos/1277407565?collection=EwAtC1IWzhY3Ww
https://www.twitch.tv/videos/1277407565?collection=EwAtC1IWzhY3Ww&t=00h00m52s
https://player.twitch.tv/?collection=EwAtC1IWzhY3Ww&video=1277407565&parent=www.example.com
https://player.twitch.tv/?collection=EwAtC1IWzhY3Ww&video=1277407565&time=0h2m27s&parent=www.example.com
https://www.twitch.tv/p/giftcard/
https://www.twitch.tv/p/about
https://www.twitch.tv/p/en/about/
https://blog.twitch.tv/
https://blog.twitch.tv/en/
https://blog.twitch.tv/en/archive/2023/
https://dev.twitch.tv/
https://dev.twitch.tv/products/
https://www.twitch.tv/downloads
https://www.twitch.tv/jobs
https://www.twitch.tv/jobs/en/
https://www.twitch.tv/turbo
https://www.twitch.tv/store
https://www.twitch.tv/creatorcamp
https://www.twitch.tv/creatorcamp/en/paths/
https://www.twitch.tv/settings/security
https://link.twitch.tv/devchat
https://affiliate.twitch.tv/
https://meetups.twitch.tv/
https://meetups.twitch.tv/events
https://help.twitch.tv/
https://help.twitch.tv/s/article/getting-started-twitch-studio
https://www.twitch.tv/giftcard/buy?ref_=gc_twitch_landing
https://www.twitch.tv/redeem
https://safety.twitch.tv/
https://safety.twitch.tv/s/article/Usernames
https://devstatus.twitch.tv/
https://devstatus.twitch.tv/uptime
https://www.twitch.tv/broadcast/studio
https://brand.twitch.tv/
https://brand.twitch.tv/downloads/twitch-brand-assets.zip
https://www.twitch.tv/partner/signup
https://www.twitch.tv/bits
https://www.twitch.tv/prime
https://sings.twitch.tv/
https://music.twitch.tv/`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
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}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions