Кажется, вы хотите сделать две вещи:
1) Определить, что URL действителен (то есть правильно отформатирован)
Для этого регулярное выражение будет хорошо работать, этот подходтакже позволит вам извлекать различные части URL, если вы хотите это сделать.
это обсуждалось здесь: Какое регулярное выражение лучше всего проверить, является ли строка допустимойURL? .
2) Определите, является ли URL реальным (т. Е. Если кто-то, где ему следовать, найдет что-то)
Это более сложно, но вы можете попробоватьAJAX-запрос к URL-адресу и, если он не работает или время ожидания истекло, предположите, что он не работает.У этого подхода могут быть некоторые ограничения из-за функций безопасности XSS на сайтах.
Если это проблема, вы можете создать службу собственного дизайна, работающую на сервере, к которому ваш JavaScript-запрос обращается, передавая его.URL, и он отвечает с ошибкой или успехом.
Вот пример:
verify.js
function verifyURL (url) {
// with jQuery
$.getJSON('check-url.cgi', { url : url }, function (res) {
console.log(res); // display server response
if ( res.status == 'success' ) {
// URL is real
} else {
// URL is not real
}
});
}
check-url.cgi
#!/usr/bin/env perl
use v5.10;
use strict;
use warnings;
use CGI qw(:standard);
use JSON::XS;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("URL Checker/0.1");
my $url = param('url');
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
my $status = $res->is_success ? 'success' : 'failure';
print header('applicaton/json'), encode_json { status => $status };