我一直在寻找解决方案,但无济于事。我试图阻止用户输入格式错误的网址。目前我已经有了这个正则表达式:
^(http|https)\://.*$
这会检查以确保用户在网址中使用 http 或 https 。但是,我需要更进一步,验证URL的结构。
例如,此网址:http://mytest.com/?=test
显然无效,因为未指定参数。当我使用此URL时,我在网络上找到的所有正则表达式都会返回。
我一直在使用this网站来测试我一直在寻找的表达方式。
答案 0 :(得分:1)
看,我认为测试URL的最佳解决方案是:
var url="http://mytest.com/?=test";
制作两个步骤:
1-仅测试URL为:
http://mytest.com/
使用模式:
var pattern1= "^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)([A-Za-z]){2,3}(\/)?";
2-拆分URL字符串,使用pattern1
获取URL查询字符串,IF URL具有查询字符串,然后使用以下模式再次对其进行测试:
var query=url.split(pattern1);
var q_str = query[1];
var pattern2 = "^(\?)?([0-9A-Za-z]+=[0-9A-Za-z]+(\&)?)+$";
祝你好运,
答案 1 :(得分:0)
我认为你遇到的问题来自于查询字符串中有效参数是什么或不是普遍定义的事实。特别是对于您的问题,有效查询的标准仍未从您应该失败的单个示例中明确定义。
准确地说,请查看RFC3986#3.4
也许你可以为一个“可接受的”查询字符串制定一个标准,然后就可以得到一个答案。 ;)