为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用JavaScript验证URL

尝试使用JavaScript验证URL

侃侃无极 2019-07-26 17:22:52
尝试使用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"。我感谢你的建议。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

使用正则表达式解析URL是不切实际的。RFC1738规则的完整实现将导致极长的正则表达式(假设它甚至可能)。当然,您当前的表达式会失败许多有效的URL,并传递无效的URL。

代替:

一个。使用实际遵循真实规则的正确URL解析器。(我不知道有一个用于JavaScript;它可能是矫枉过正的。你可以在服务器端做到这一点)。要么,

湾 只需删除任何前导或尾随空格,然后检查它在前面有一个首选方案(通常是“http://”或“https://”),并保留它。要么,

C。尝试使用URL并查看最后的内容,例如通过从服务器端发送HTTP HEAD请求。如果您收到404或连接错误,则可能是错误的。

即使网址类似于“ http:// wwww ”,它也会返回true 。

嗯,这确实是一个完全有效的URL。

如果要检查“wwww”等主机名是否确实存在,则别无选择,只能在DNS中查找。同样,这将是服务器端代码。


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信