2014-04-09 86 views
0

我有正则表达式的问题。我需要验证以下网址URL验证器的正则表达式

http://50.244.41.23/ 

http://myserver/ 

我用下面的表达式

Regex urlRx = new Regex(@"(http|https)://([0-9]*)", RegexOptions.IgnoreCase); 

Regex urlRx = new Regex(@"(http|https)://(\b(?:\d{1,3}\.){3}\d{1,3}\b)", RegexOptions.IgnoreCase); 

两者都工作到一定程度,但它不会成为确切目的。它给出了以下字符串的成功,但我想表达的失败对这样的字符串..

http://50.244.41.23\ 

http://256.244.41.23/ 

http://256.244.41.23.123/ 

有人可以帮到了上面的URL创建一个恰当的正则表达式验证。

感谢 塞巴斯蒂安

回答

1

以下是一些匹配IPv4地址的示例正则表达式; “准确”版本只能匹配有效地址:http://answers.oreilly.com/topic/318-how-to-match-ipv4-addresses-with-regular-expressions/

通过添加更多内容,您应该能够按照您要查找的格式匹配网址。这应该在你的问题符合你的第一个(有效)的IP地址,但不是最后一个(无效)3:

^https?://(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/$

+0

这一个是伟大的,工作在几乎所有情况下,由于 –

+0

我要验证的端口另外,例如http://50.244.41.23:8085/...需要更改哪些内容? –

0

通过使用令牌开始(^)和结束行($),你可以确保你的对手是排他的。

第二个正则表达式看起来最接近。下面是一个例子:

@"^(http|https)://(\b(?:\d{1,3}\.){3}\d{1,3}\b)$"