使用JavaScript验证网址?

时间:2011-10-28 04:33:36

标签: javascript validation

我有一个应用程序,其中用户有一些设置页面,其中一些设置允许输入URL。我希望能够使用javascript运行检查,以确保他们输入的网址有效并且是真实的网址。

当他们点击提交时,它将执行它应该执行的操作,或者如果URL中有错误,则弹出警告并说“输入的URL无效!”。

有没有办法用JS做到这一点?我也希望这个脚本与http://和https://以及www一起使用。在URL中,以及每个域扩展名(.com,.tv等)。这也需要使用JavaScript,而不是jQuery。

有人能告诉我怎么做吗?感谢。

1 个答案:

答案 0 :(得分:2)

似乎你想要做两件事:

1)确定URL有效(即格式正确)

为此,正则表达式将运行良好,这种方法还允许您检索URL的各个部分,如果这是您想要做的事情。

这里已经讨论过:What is the best regular expression to check if a string is a valid URL?

2)确定网址是真实的(即,如果有人在哪里跟踪,他们会发现某些内容)

这更棘手,但您可以尝试向URL发出AJAX请求,如果失败或超时则假设它已关闭。由于站点上的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 };