Я пытаюсь использовать Regex для извлечения субдомена из URL, который следует строгому шаблону. Я хочу сопоставлять только URL-адреса с указанными поддоменами , поэтому я использую отрицательный прогноз. Кажется, это работает во многих оценщиках регулярных выражений, но когда я запускаю в узле, обе строки совпадают. Вот код:
const defaultDomain = 'https://xyz.domain.com';
const scopedDomain = 'https://xyz.subdomain.domain.com';
const regex = /^https:\/\/xyz\.([^.]+(?!domain))\./
const matchPrefix1 = defaultDomain.match(regex);
const matchPrefix2 = scopedDomain.match(regex);
console.log(matchPrefix1);
console.log(matchPrefix2);
Ожидается: matchPrefix1 равно null
, а matchPrefix2 приводит к совпадению, в котором первая группа захвата имеет значение «поддомен»
Факт: и matchPrefix1, и matchPrefix2 содержат данные, причем группы захвата возвращаются как «домен» и «поддомен» соответственно
Ссылка на регулярное выражение (работает!): https://regexr.com/42bfn
Ссылка на репл (не работает): https://repl.it/@tomismore/SpiffyFrivolousLaws
Что здесь происходит?