Проверка URL с jQuery без проверять-плагина?

Я должен проверить URL в переменной с jQuery, но не могу использовать проверять-плагин. Существует ли простой способ сделать это?

46
задан Rocket Hazmat 13 April 2012 в 20:18
поделиться

2 ответа

Вы можете использовать то же самое регулярное выражение, которое выполняет плагин проверки (обновлено до последнего регулярного выражения 23 мая 2015 г.):

 function isUrlValid (url) {return (hidden)} var testCases = ["http://www.google.com/", " https://www.google.com/ "," ftp://www.google.com/ "," http://google.com/ "," http://google.com "," https: / /google.com "," http://www.google.com:80/ "," https://www.google.com:443/ "," http://127.0.0.1/ "," http: //127.0.0.1:9200/ "," www.site.com "," x: "," http: // "," javascript: alert ('xss') "," http: // w "," http: "," дерп: //www.google.com "," http: // локальный сервер "], div = document.getElementById (" вывод "); для (var я = 0; я  valid :": " invalid :") + "" + test + "\ п"; } 
 .valid {цвет: зеленый; } .invalid {цвет: красный; } 
 
 

Это обрабатывает Unicode и т. Д., Так что это немного многословно. Источник - сам плагин проверки . Несколько примечаний: это , вероятно, то, что вам нужно , но это не совсем правильное . Обычно вам нужно выбрать немного другое регулярное выражение, если вы хотите принимать такие вещи, как http: // w и http: // localserver , которые допустимы в среде интрасети, но обычно не разрешены. в большинстве веб-форм. В некотором смысле это регулярное выражение более безопасно, поскольку в таких случаях требуется FQDN .Точно так же здесь отклоняются другие примеры, такие как пользовательские протоколы, но они действительны и работают для многих вещей, используемых сегодня. Если вы спрашиваете пользователей: "Какая у вас домашняя страница?" в форме ... вы, вероятно, все равно захотите их исключить.

Любой, кто обнаружит это позже: пожалуйста, не стесняйтесь протестировать дополнительные тестовые примеры с включенным мной фрагментом и обновите ответ, если вы считаете, что следует упомянуть новый общий случай. Я переписал ответ с последним регулярным выражением и в этом формате, чтобы лучше служить сообществу.

130
ответ дан 26 November 2019 в 19:59
поделиться

да с регулярным выражением:

/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix
6
ответ дан 26 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: