Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;检查有效的IP地址或IP地址 我目前尝试只使用标准的C++方法,如正则表达式,将用户输入检查为有效的URL(http(s)//www. abcAT或本地主机)或有效的IP地址(127.0.0.1,…)。我可以使用ASIO(独立)、正则表达式和arpa/inet.h库。有没有一种非常简单的方法可以做到这一点_C++_Regex_Url_Ip - Fatal编程技术网

C++;检查有效的IP地址或IP地址 我目前尝试只使用标准的C++方法,如正则表达式,将用户输入检查为有效的URL(http(s)//www. abcAT或本地主机)或有效的IP地址(127.0.0.1,…)。我可以使用ASIO(独立)、正则表达式和arpa/inet.h库。有没有一种非常简单的方法可以做到这一点

C++;检查有效的IP地址或IP地址 我目前尝试只使用标准的C++方法,如正则表达式,将用户输入检查为有效的URL(http(s)//www. abcAT或本地主机)或有效的IP地址(127.0.0.1,…)。我可以使用ASIO(独立)、正则表达式和arpa/inet.h库。有没有一种非常简单的方法可以做到这一点,c++,regex,url,ip,C++,Regex,Url,Ip,谢谢你的帮助 通常,您应该对自己进行此类验证保持警惕,因为它们往往比乍一看要复杂得多。例如,要验证IPv4,您不能只检查“以点分隔的4个数字”。您还必须检查每个数字的范围(0-255)、特殊情况(如0.0.0.0)等。那么IPv6呢?URL/主机名也同样复杂 回答您的具体问题:不,没有简单的方法验证IP/主机名 或者使用专用库进行检查,或者简单地尝试对地址执行任何您想执行的操作,并适当地处理错误。您可能会考虑在开始时进行明显的错误检查,主要是为了向用户提供更好的错误消息。但即便如此,也需要一点思

谢谢你的帮助

通常,您应该对自己进行此类验证保持警惕,因为它们往往比乍一看要复杂得多。例如,要验证IPv4,您不能只检查“以点分隔的4个数字”。您还必须检查每个数字的范围(0-255)、特殊情况(如0.0.0.0)等。那么IPv6呢?URL/主机名也同样复杂

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

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

只需使用以下方法:

^https?:\/\/(.+\..{2,10}|localhost|(?:\d{1,3}\.){3}\d{1,3})\/?.*?$
这将匹配以
https://
http://
开头的任何地址,然后是以下三种情况之一:

  • 任何字符,后跟点
    和长度为2到10的TLD
  • localhost
  • 包含4段最多3个字符的数字的IP地址(不检查IP地址的有效性,接受
    999.999.999

  • 这是一个很有价值的方法,是的。正则表达式不是标准的C++方法。试着把库集成到你的构建中。尝试使用一些代码。如果你有具体的问题,请返回并提出问题。不要忘记在那之前搜索答案。“当然,Okas是标准的一部分。你住在什么岩石下?”从C++11开始,它就成为了标准。似乎我甚至使用过它。嗯…检查一个有效的URL…很难。看。没错。你应该使用你将要使用的任何API将输入转换成可用于

    connect()的东西
    或您将要调用的任何内容,并在API出现错误时处理这些错误。不要试图预测API错误。您只是检查URL,忽略裸IP地址。可能不是最好的解决方案,但在我的情况下,它完全可用,谢谢!