Создать regExp для валидации домена любого уровня

Валидные адресы допустим:

asd.sd
asdasd.ru
www.dffe.ru
dfdf.dffdf.df.we
www.yandex.ru
www.asd.asd.asd.asd

Не валидные:

www
www.sdd.
asd.s
asd.sd.s

Начал делать так:

`/([\wЁёА-я\d-]{2,})\.([\wЁёА-я\d-]{2,})/`

Но потом ступор. Надо сделать проверку, что если потом есть точка, то после нее должно быть минимум 2 символа, если точки нет, то вернуть как есть. И эту проверку надо же как-то зациклить, ведь уровней может быть много?


Ответы (1 шт):

Автор решения: vsemozhebuty

Можно попробовать так:

const valid = [
  'asd.sd',
  'asdasd.ru',
  'www.dffe.ru',
  'dfdf.dffdf.df.we',
  'www.yandex.ru',
  'www.asd.asd.asd.asd',
];

const notValid = [
  'www',
  'www.sdd.',
  'asd.s',
  'asd.sd.s',
];

const re = /^([\wёa-я-]{2,}\.)+[\wёa-я-]{2,}$/i;

console.log(
  valid.map(testCase => re.test(testCase))
);

console.log(
  notValid.map(testCase => re.test(testCase))
);

→ Ссылка