2015-12-02 1 views
-1

Мне нужно проверить, является ли URL, введенный в текстовое поле, допустимым доменом, сравнивая его с набором допустимых доменов и возвращая предупреждение, если оно не соответствует. Не могли бы вы мне помочь?Как разрешить только определенный набор доменов в javascript и бросать предупреждение, если оно не соответствует?

URL-адрес должен иметь формат http://www. .abc.com/cdef .. http://www. .xyz.com и т.д ..

Я попытался с помощью это регулярное выражение:

regex = /((http|https):\/\/)(www.)?([a-zA-Z0-9]+).((abc.com)|(xyz.com)).*/ 

, но его не приносит должных результатов. Надеюсь, эта информация поможет.

+0

Что вы пробовали? Это зависит от ваших доменов, как будет выглядеть регулярное выражение! Почему валидация на клиенте? Почему с регулярным выражением? Добавьте дополнительный контекст. –

ответ

1

Вы можете сделать это с помощью JavaScript URL объекта и его свойство host:

function isAllowed(urlString) 
{ 
    var allowed = ['example.com', 'stackoverflow.com', 'google.com']; 
    var urlObject = new URL(urlString); 

    return allowed.indexOf(urlObject.host) > -1; 
} 

console.log(isAllowed('http://example.com/path/?q=1')); // true 
console.log(isAllowed('https://subdomain.example.com/')); // false 
console.log(isAllowed('http://stacksnippets.net')); // false 

if (!isAllowed(document.getElementById('yourTextbox').value)) 
{ 
    alert('Domain is not allowed!'); 
} 

Обратите внимание, что он не может работать во всех браузерах.
Проверьте таблицу совместимости в данной ссылке.

+0

для старых браузеров, я думаю, что я помню, что элементы привязки имели это свойство 'host', поэтому' var a = document.createElement ('a'); a.href = urlString; return a.host; 'должен быть возможным отступлением, если URL-адрес не поддерживается. Не уверен, хотя. – Kaiido

0

Это основное упражнение по программированию. Вы можете использовать свои URL-адреса в массиве и затем прокручивать их, чтобы проверить, что вы ввели.

Вот jsfiddle того, что я взламываю быстро. Научитесь сами писать это, и вы можете взломать небольшие программы, чтобы помочь вам выполнять мирские задачи.

var listOfUrl = [ 
'www.yahoo.com', 
'www.google.com', 
'www.bing.com' 
//enter more url here... 
]; 


for(var i = 0; i <= listOfUrl.length; i++) { 
    if(listOfUrl[i] === enteredUrl){ 
    document.getElementById('result').innerHTML = 'there is a match'; 
    return; 
} 

http://jsfiddle.net/henryw4k/5mogf06t/

Смежные вопросы