Главная страница  /  Занятия  /  #9  /  Разработать валидатор доменных имен с использованием регулярных выражений в JavaScript

Разработать валидатор доменных имен с использованием регулярных выражений в JavaScript

Задание:

Есть html-документ:
 <!DOCTYPE html>
 
 <html lang="ru">
 
  <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Валидатор доменных имен с использованием регулярных выражений в JavaScript</title>
   <link rel="stylesheet" href="styles.css">
   <script src="scripts.js"></script>
  </head>
 
  <body>
   <div id="formDiv">
    <label for="domainName">Ведите доменное имя:</label><br>
    <input type="text" id="domainName"><br><br>
    <button id="checkDomainName">Проверить</button>
   </div>
  </body>
 
 </html>

и стилевая разметка:
 label				{ font-family: Arial, Tahoma, Verdana; font-size: 14px; }
 #domainName			{ width: 250px; height: 20px; margin-top: 6px; border: 1px solid #d0d0d0; }
 #checkDomainName		{ width: 140px; height: 26px; border: 1px solid #d0d0d0; background-color: #f0f0f0; }

Необходимо написать скрипт (scripts.js), осуществляющий проверку введенного доменного имени на соответствие правилам записи доменных имен, приведенным ниже.

Доменное имя состоит из нескольких частей (уровней), разделенных точками. Домен первого уровня (самая правая часть после точки), например, ru или com, называется доменной зоной. Пример домена второго уровня – ktno.ru, третьего – education.ktno.ru. Ограничения на число уровней домена нет. Каждая часть (кроме доменной зоны) может содержать от 2 до 63 символов, включая буквы английского алфавита (регистр не имеет значения), цифры и символ «-» (дефис, минус). При этом, ни одна из частей не может начинаться и оканчиваться символом «-» (дефис, минус), а также содержать более одного символа «-» (дефис, минус) подряд. Доменная зона может содержать от 2 до 63 символов, включая только буквы английского алфавита (регистр не имеет значения).

Посмотреть решение

JS-скрипты (scripts.js):

   window.onload = function()
   {
    document.getElementById('checkDomainName').onclick = function() { checkDomainName(); };
    document.getElementById('domainName').onkeydown = function(e) { if(e.keyCode == 13) { checkDomainName(); } };
   };
   
   function checkDomainName()
   {
    if(/^([a-zA-Z0-9]([a-zA-Z0-9]|\-(?!\-)){0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$/i.test(document.getElementById('domainName').value))
    {
     alert('Корректное имя домена');
    }
    else
    {
     alert('Некорректное имя домена');
    }
   }

Результат:

Результат выполнения задания можно посмотреть здесь.