Regex 使用cgi验证URL

Regex 使用cgi验证URL,regex,Regex,我需要一个正则表达式,可以让我验证Url。我发现了这个: "^(http(?:s)?\:\/\/[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$" 但我的问题是,除了常规URL之外,我还需要允许不带https的.cgi路径,如下所示: 123.45

我需要一个正则表达式,可以让我验证Url。我发现了这个:

"^(http(?:s)?\:\/\/[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$"
但我的问题是,除了常规URL之外,我还需要允许不带https的.cgi路径,如下所示:

123.45.678.543:30/cgi-bin/blah/blah.cgi

你能帮我想一想如何把这个加到上面的表达式中吗?
谢谢。

我觉得您发布的RegExp不够通用,无法验证任何类型的URL。看一看特别是@Epileless的答案,也许能找到更详细的答案

URL的问题不在于它指向某个cgi文件。问题是,它应该是——至少在你可能正在谈论的情况下是这样的

http://123.45.678.543:30/cgi-bin/blah/blah.cgi
此外,IP地址中的数字最多可以是255。
即使有了这些更正,它仍然不符合应用您发布的RegExp的条件,但这只是对您的RegExp不完善的又一个提示。

您的示例URL无效,但我想我已经在CSI Miami上看到了它。正则表达式也拒绝使用IPv6文本的合法URL。但不知怎的,它对我来说是有效的。。。我的意思是,仅用于验证URL。你能告诉我是怎么回事吗?你不能有一个八位组大于255的IP地址。我想说的是,使用正则表达式真的很难,而且有很多不好的正则表达式。即使你做了一个有效的链接,有人仍然会给你一个无效的域或者一个返回404/403的链接,等等。如果你真的想知道一个URL是否有效的话,打个电话。你可以提出一个真正的HEAD请求来检查它是否有效。哦,我还以为你在说Regex expressin呢。是的,我只是编了那个IP地址,所以是的,它不是真的。我认为对我来说,检查格式是否有效就足够了,而不是地址是否真的存在。你可能想看看我写的一个页面:一定要尝试双击一些正则表达式模式以获得特定于语言的代码段!此外,您可能希望查看前面提到的验证问题中提供的特定URL验证函数。