Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于验证带有参数的url的正则表达式_Regex_Url - Fatal编程技术网

Regex 用于验证带有参数的url的正则表达式

Regex 用于验证带有参数的url的正则表达式,regex,url,Regex,Url,我一直在到处寻找解决这个问题的办法,但都没有用。我试图阻止用户输入格式错误的URL。目前,我有一个正则表达式: ^(http|https)\://.*$ 这将进行检查,以确保用户在URL中使用http或https。但是,我需要进一步验证URL的结构 例如,此URL:http://mytest.com/?=test显然无效,因为未指定参数。当我使用此URL时,我在web上找到的所有正则表达式都返回有效 我一直在用这个网站测试我找到的表达式 看,我认为测试URL的最佳解决方案是: var url

我一直在到处寻找解决这个问题的办法,但都没有用。我试图阻止用户输入格式错误的URL。目前,我有一个正则表达式:

^(http|https)\://.*$
这将进行检查,以确保用户在URL中使用http或https。但是,我需要进一步验证URL的结构

例如,此URL:
http://mytest.com/?=test
显然无效,因为未指定参数。当我使用此URL时,我在web上找到的所有正则表达式都返回有效


我一直在用这个网站测试我找到的表达式

看,我认为测试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-使用
pattern1
拆分URL字符串以获取URL查询字符串,如果URL具有查询字符串,则使用以下模式再次对其进行测试:

var query=url.split(pattern1);
var q_str = query[1];
var pattern2 = "^(\?)?([0-9A-Za-z]+=[0-9A-Za-z]+(\&)?)+$";

祝您好运,

我相信您遇到的问题来自这样一个事实,即查询字符串中的有效参数或无效参数并不是通用定义的。特别是对于您的问题,有效查询的条件仍然没有从您的失败示例中很好地定义

准确地说,看看这个


也许您可以为什么应该是“可接受的”查询字符串制定一个条件,并从中得到答案。;)

我已尝试过此^([^:/?#]+):(/([^/?#]*)?([^?#]*))([^?#]*)(\?([^?#]*))((^?([^?#]*))的可能副本?这是为了验证结构。然而,当使用这个,甚至失败。蜡笔-我在那个线程中尝试了解决方案,它们似乎对我不起作用那么你的问题是在其他地方,因为在那个线程中的模式很好地工作在什么URL上这是失败的,确切地说?什么字符串元素不正确匹配?嘿,艾哈迈德,谢谢你的回答。我听到你在说什么,但是我没有两步解决方案的选择。你看,我的页面是从存储在数据库中的xml呈现出来的,这个xml包含正则表达式——如果你明白我的意思的话?我可能不得不完全放弃验证。我将尝试使用两个验证程序。我会让您知道xml解析器对pattern2不满意的情况。它在抱怨“&”还有其他选择吗?只是尝试了一下,不幸的是它没有工作。仍然说这个url是无效的,即使它是一个简单的url,比如google.co.ukok,试试这个模式
var pattern=“^((http:\/\/;https:\/\/)?(www.)?([0-9A-Za-z]+\)([a-Za-z]){2,3}(\/)([0-9A-Za-z]*(\.-*)*[0-9A-Za-z]*(\/)(\?)(\?)([0-9A-Za-z]+=[0-9A-Za-z]++-*”)([0-9A-Za])