IPV4地址验证的正则表达式

时间:2014-04-16 05:47:00

标签: c# regex

我需要一些帮助来创建IPV4地址验证的正则表达式。 我的验证字符串如下..

  

HTTP S:// IP:端口/

我试过的内容如下......

private bool IsUrlValid(string url)
  {
    Regex urlRx = new Regex(@"^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]?)/$", RegexOptions.IgnoreCase);
 return urlRx.IsMatch(url);
  } 

使用此代码,我可以完美地验证没有端口的IPV4地址;但是我想修改它以接受端口号。 任何有关这方面的帮助将不胜感激。 提前致谢 塞巴斯蒂安

1 个答案:

答案 0 :(得分:0)

用正则表达式做这个不太好。端口范围为1~65535。因此,我们可以针对6553[0-5]655[0-2]\d65[0-4]\d{2}6[0-4]\d{3}[1-5]\d{4}[1-9]\d{,3}对其进行验证。它将为仅包含端口的字符串提供以下正则表达式:

^(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3})$ 

结合您的IP地址模式:

^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]?):(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,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]?)(:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}))?/$