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