JavaScript - Как проверить URL с указанным c доменным именем? - PullRequest
0 голосов
/ 06 мая 2020

Как мне использовать JavaScript для поиска определенного c доменного имени и затем вернуть true, если это тот, который я ищу, или false, если это не тот URL, который я ищу. В моем примере пользователь вводит URL-адрес в поле ввода, JavaScript проверяет, является ли он определенным доменом c, например https://example.com, а затем перенаправляет пользователя на эту страницу. Если они введут другой URL без https://example.com, JavaScript вернет false и покажет сообщение об ошибке. Если пользователь вводит URL-адрес https://example.com/join/1234, я просто нажимаю sh, чтобы проверить основной домен. Код, который у меня есть, ниже. Я пробовал использовать регулярное выражение, но не знаю, как заставить его проверять только доменное имя -> https://example.com.

 <div class="col-md-12 col-lg-5"><button class="btn btn-primary btn-lg" id = "start-call" data-aos="zoom-in" data-aos-duration="900" data-aos-delay="2000" type="button" style="margin: 160px;width: 135px;" onclick = "goToCall()" >Start Call</button></div>


 function isDomainURL(str){
  regexp =  /^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
    if (regexp.test(str)){

    return true;

    }else{

    return false:

    }

 }

 if (isDomainURL(document.getElementById('input-01').value) == true)
    {
        window.location = document.getElementById('input-01').value;
    }
    else
    {
        swal({
            title: "Invalid URL",
            text: "Thats was an invalid DropCall URL.",
            icon: "error",
        });
    }

1 Ответ

1 голос
/ 06 мая 2020

Я бы порекомендовал использовать для этой цели объект URL.

const url = new URL('https://example.com/my-path');

console.log(url.host);   

Это намного проще, чем использование регулярного выражения.

Имейте в виду, что относительные URL-адреса также приемлемы, поэтому я бы рекомендовал проверить, является ли протокол часть строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...