C ++检查有效的IP地址或IP

时间:2017-02-11 08:38:07

标签: c++ regex url ip

我目前正在尝试将用户输入检查为有效的URL(http://www.abc.at或localhost)或有效的IP地址(127.0.0.1,... )仅使用REGEX等标准C ++方法。我可以使用库ASIO(独立),regex和arpa / inet.h。有没有办法以非常简单的方式做到这一点?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

通常,您应该对自己进行此类验证持谨慎态度,因为它们往往比初看起来要复杂得多。例如,要验证IPv4,您不能只检查“由点分隔的4个数字”。你还需要检查每个数字的范围(0-255),特殊情况如0.0.0.0等等。那么IPv6呢? URL /主机名并不复杂。

回答您的具体问题:不,没有简单的方法来验证IP /主机名。

要么使用专用库进行检查,要么只是尝试做任何你想对地址做的事情并适当地处理错误。您可能会考虑在开始时对明显的错误进行粗略的健全性检查,主要是为了向用户提供更好的错误消息。但即便如此,也需要一点思考。例如,很容易忘记IPv6并拒绝完全有效的地址。

答案 1 :(得分:0)

请使用:

^https?:\/\/(.+\..{2,10}|localhost|(?:\d{1,3}\.){3}\d{1,3})\/?.*?$

这将匹配以https://http://开头的任何地址,然后是以下三种情况之一:

  1. 任何字符,后跟点.和TLD,长度为2到10。
  2. localhost
  3. 一个包含4段数字的IP地址,最多3个字符(不检查IP地址的有效性,接受999.999.999.999
  4. 这是live example