Я предполагаю, что вы знаете, как получить значение <input>
с помощью JavaScript. Итак, ваша проблема - написать специальную функцию для проверки URL.
Сначала мы могли бы рассмотреть проверку правильности синтаксического URL .
Некоторые примеры того, что наш валидатор URL должен определенно рассмотреть вопрос:
http://www.example.com.
http://www.google.ee/search?q=foo&sourceid=opera&ie=utf-8&oe=utf-8
https://ama-z-on.co.uk/index.html?a=hei%20hoo
ftp://ftp.linux.ee/public/gentoo/i386/portage-snapshot.tar.bz
http://he.wikipedia.org/wiki/שטרגליים#.D7.A8.D7.90.D7.95_.D7.92.D7.9D
sftp://123.1.255.128:80/pub
И это только малая часть реального разнообразия URL-адресов. И HTTP и FTP не единственные протоколы, возможные для URL. О, чувак, эта проверка URL действительно сложна.
Но давайте предположим, что действительный URL должен начинаться с нескольких букв, затем ": //" и после этого, что когда-либо. Чтобы проверить этот тип шаблона, вы должны использовать регулярное выражение, которое в JavaScript выглядит следующим образом:
function validateUrl(url) {
return /^[a-z]+:\/\//i.test(url);
}
Регулярные выражения - это целая большая тема, которую вы должны изучить самостоятельно, но только краткое объяснение здесь:
/
- начало регулярного выражения
^
- соответствует началу строки
[a-z]
- соответствует либо a, b, c, ..., x, y, либо z.
+
- означает, что предыдущий паттерн можно повторить один или несколько раз.
:
- соответствует самому символу двоеточия.
\/
- соответствует прямой косой черте /
(без обратной косой черты JavaScript будет считать, что это конец регулярного выражения).
/
- заканчивает регулярное выражение.
i
- это модификатор, который делает это регулярное выражение нечувствительным к регистру.
.test(url)
- вызывает метод test
объекта регулярного выражения с url
в качестве параметра. Когда параметр соответствует регулярному выражению, он возвращает true
, в противном случае false
.
Кроме того, вы можете разрешить ввод URL-адреса без части http://
- это означает, что вам действительно нужно проверить доменное имя или IP-адрес или что-то еще после него.
Полагаю, вы сейчас довольно смущены, и это намеренно. Вы действительно не должны писать JavaScript для самостоятельной проверки URL, слишком сложно сделать это правильно. Вместо этого вам следует использовать библиотечную функцию , которая проверена и подтверждена многими экспертами.
Возможно, используемая вами JavaScript-фреймворк уже имеет хороший инструмент для этой работы. В этом случае используйте его. К сожалению, я не могу предложить какую-либо конкретную библиотеку для проверки URL.
Кроме того, возможно, вы захотите пропинговать URL , как предложил Джош Стодола, чтобы убедиться, что он действительно существует. Хотя, как подсказывает Джош, это может быть проблематично, если ресурс, на который ссылается URL, имеет размер 10 ГБ:)