尝试使用JavaScript验证URL

尝试使用JavaScript验证URL

我想验证一个URL并显示消息。以下是我的代码:

$("#pageUrl").keydown(function(){
        $(".status").show();
        var url = $("#pageUrl").val();

        if(isValidURL(url)){

        $.ajax({
            type: "POST",
            url: "demo.php",
            data: "pageUrl="+ url,
            success: function(msg){
                if(msg == 1 ){
                    $(".status").html('<img src="images/success.gif"/><span><strong>SiteID:</strong>12345678901234456</span>');
                }else{
                    $(".status").html('<img src="images/failure.gif"/>');
                }
            }
            });

            }else{

                    $(".status").html('<img src="images/failure.gif"/>');
            }

    });function isValidURL(url){
    var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }}

我的问题是,即使输入正确的URL直到它与正则表达式匹配,它也会显示错误消息,即使URL类似,它也会返回true "http://wwww"

我感谢你的建议。


侃侃无极
浏览 644回答 3
3回答

30秒到达战场

使用正则表达式解析URL是不切实际的。RFC1738规则的完整实现将导致极长的正则表达式(假设它甚至可能)。当然,您当前的表达式会失败许多有效的URL,并传递无效的URL。代替:一个。使用实际遵循真实规则的正确URL解析器。(我不知道有一个用于JavaScript;它可能是矫枉过正的。你可以在服务器端做到这一点)。要么,湾&nbsp;只需删除任何前导或尾随空格,然后检查它在前面有一个首选方案(通常是“http://”或“https://”),并保留它。要么,C。尝试使用URL并查看最后的内容,例如通过从服务器端发送HTTP HEAD请求。如果您收到404或连接错误,则可能是错误的。即使网址类似于“&nbsp;http:// wwww&nbsp;”,它也会返回true&nbsp;。嗯,这确实是一个完全有效的URL。如果要检查“wwww”等主机名是否确实存在,则别无选择,只能在DNS中查找。同样,这将是服务器端代码。
打开App,查看更多内容
随时随地看视频慕课网APP