使用cgi验证URL

时间:2012-07-02 18:31:47

标签: 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\-]+)*)$"

但我的问题是,除了常规网址,我需要允许.cgi路径,没有“http(s)”,如下所示:

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

你能帮我解决一下如何将其添加到上面的表达式中吗? 感谢。

1 个答案:

答案 0 :(得分:2)

在我看来,您发布的RegExp通常不足以验证任何类型的网址。看看What is the best regular expression to check if a string is a valid URL?(尤其是@ eyelidlessness的答案),或许可以找到更精细的答案。

您的网址问题并不是指向某个cgi文件。问题是它应该 - 至少(在你可能(?)谈论的情况下) - 是

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

此外,IP地址中的数字最多可以为255。 即使进行了这些更正,它仍然无法使用您发布的RegExp,但这只是对RegExp缺陷的一个暗示。