📜  如何使用ReGex验证IP地址

📅  最后修改于: 2021-05-04 16:54:05             🧑  作者: Mango

给定一个IP地址,任务是借助C++中的Regex(正则表达式)将该IP地址验证为有效的IPv4地址或IPv6地址。如果IP地址无效,则打印无效的IP地址。

例子:

方法:

  • Regex(正则表达式)在C++中将用于检查IP地址。
  • 范围规格
    指定字符或字面量范围是正则表达式中使用的最简单的标准之一。
i) [a-z]
ii) [A-Za-z0-9]
  • 在上面的表达式([])中,方括号用于指定范围。
  • 第一个表达式将完全匹配一个小写字符。
  • 第二个表达式指定包含一个单一的大写字符,一个小写字符,并且从0到9的数字的范围内。
  • 现在包括一个“。”作为表达式的一部分,我们需要对‘。’进行转义这可以通过以下方式完成:
[\\.0-9]

上面的表达式表示一个“。”以及介于0到9之间的数字作为正则表达式。

  • regex_match()函数用于匹配给定的模式。如果给定表达式与字符串匹配,则此函数返回true。否则,该函数返回false。

这是上述方法的实现。

C++
// C++ program to validate
// IP address using Regex
 
#include 
using namespace std;
 
// Function for Validating IP
string Validate_It(string IP)
{
 
    // Regex expression for validating IPv4
    regex ipv4("(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])");
 
    // Regex expression for validating IPv6
    regex ipv6("((([0-9a-fA-F]){1,4})\\:){7}([0-9a-fA-F]){1,4}");
 
    // Checking if it is a valid IPv4 addresses
    if (regex_match(IP, ipv4))
        return "Valid IPv4";
 
    // Checking if it is a valid IPv6 addresses
    else if (regex_match(IP, ipv6))
        return "Valid IPv6";
 
    // Return Invalid
    return "Invalid IP";
}
 
// Driver Code
int main()
{
    // IP addresses to validate
    string IP = "203.120.223.13";
    cout << Validate_It(IP) << endl;
 
    IP = "fffe:3465:efab:23fe:2235:6565:aaab:0001";
    cout << Validate_It(IP) << endl;
 
    IP = "2F33:12a0:3Ea0:0302";
    cout << Validate_It(IP) << endl;
 
    return 0;
}


Python3
# Python3 program to validate
# IP address using Regex
import re
 
# Function for Validating IP
def Validate_It(IP):
 
    # Regex expression for validating IPv4
    regex = "(([0-9]|[1-9][0-9]|1[0-9][0-9]|"\
            "2[0-4][0-9]|25[0-5])\\.){3}"\
            "([0-9]|[1-9][0-9]|1[0-9][0-9]|"\
            "2[0-4][0-9]|25[0-5])"
     
    # Regex expression for validating IPv6
    regex1 = "((([0-9a-fA-F]){1,4})\\:){7}"\
             "([0-9a-fA-F]){1,4}"
     
    p = re.compile(regex)
    p1 = re.compile(regex1)
 
    # Checking if it is a valid IPv4 addresses
    if (re.search(p, IP)):
        return "Valid IPv4"
 
    # Checking if it is a valid IPv6 addresses
    elif (re.search(p1, IP)):
        return "Valid IPv6"
 
    # Return Invalid
    return "Invalid IP"
 
# Driver Code
 
# IP addresses to validate
IP = "203.120.223.13"
print(Validate_It(IP))
 
IP = "fffe:3465:efab:23fe:2235:6565:aaab:0001"
print(Validate_It(IP))
 
IP = "2F33:12a0:3Ea0:0302"
print(Validate_It(IP))
 
# This code is contributed by avanitrachhadiya2155


输出:
Valid IPv4
Valid IPv6
Invalid IP

时间复杂度: O(N)
辅助空间: O(1)