我目前正在尝试将用户输入检查为有效的URL(http://www.abc.at或localhost)或有效的IP地址(127.0.0.1,... )仅使用REGEX等标准C ++方法。我可以使用库ASIO(独立),regex和arpa / inet.h。有没有办法以非常简单的方式做到这一点?
感谢您的帮助!
答案 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://
开头的任何地址,然后是以下三种情况之一:
.
和TLD,长度为2到10。localhost
999.999.999.999
。这是live example。