给定一个 IP 地址,任务是借助 C++ 中的 Regex(正则表达式)验证该 IP 地址是否为有效的 IPv4 地址或 IPv6 地址。如果 IP 地址无效,则打印无效的 IP 地址。
例子:
Input: str = “203.120.223.13”
Output: Valid IPv4
Input: str = “000.12.234.23.23”
Output: Invalid IP
Input: str = “2F33:12a0:3Ea0:0302”
Output: Invalid IP
Input: str = “I.Am.not.an.ip”
Output: Invalid 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)
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live