使用C ++中的ReGex模式验证IPv4地址

给定一个IP地址,任务是验证该IP地址,并在的帮助下检查它是否为IPv4 ReGex(Regular Expression)。如果IP地址有效,则打印“ IPv4地址”,否则打印“否”。

有效的IPv4地址是格式为“ X1.X2.X3.X4”的IP,其中0 <= Xi <= 255,并且Xi不能包含前导零。例如,“ 192.168.1.1”和“ 192.168.1.0”是有效的IPv4地址,但是“ 192.168.01.1”,而“ 192.168.1.00”和“ 192.168@1.1”是无效的IPv4地址。例如,

输入1 -

IP= “172.15.254.2”

输出-

“IPv4”

说明-这是有效的IPv4地址,返回“ IPv4”。

输入- 2 -

IP= “312.25.12.1”

输出-

“Not”

说明-这不是有效的IPv4地址,返回“否”。

解决这个问题的方法

要检查给定的IP地址是否为IPv4,我们使用ReGex。ReGex是一种表达式,其中包含定义特定模式的一系列字符。这些模式可用于算法中以匹配字符串中的模式。它还广泛用于输入验证。

范围指定-我们可以指定字符以最简单的方式制作图案。要使用字符指定范围,可以使用“ []”括号。

指定字符-上面的表达式将正则表达式表示开括号和a到z,'A'到'Z'以及'0'到'9'范围内的数字。[az],[AZ]和[0-9]。

重复模式-表达式修饰符可以是“ +”,表示匹配某个模式的出现一次或多次,也可以是“ *”,表示匹配某个模式的出现零次或多次。

表达式[az] *将匹配空白字符串。

如果要指定一组字符以匹配一次或多次,则可以使用括号,如下所示:

[Abc]+

以下是解决此问题的方法,

  • 输入指定一个IP地址的字符串。

  • 字符串函数validIPAddress(string IP)将IP地址作为输入,并检查输入的字符串是否有效。如果有效,则返回“ IPv4”,否则返回“ Not a IP Address”。

  • 为IPv4地址创建一个正则表达式模式。由于IPv4地址包含4个字段,其中每个字段都包含0-255范围内的值。IPv4地址看起来像XXX.XXX.XXX.XXX。

  • 有效的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之间。

  • 同样,对于第二个字段,第一个字符将在100-199范围内,因此正则表达式模式将为“ 1 [0-9] -0-9]”

  • 对于下一个字段,该数字将在200-249范围内。因此,正则表达式模式将为“ 2 [0-4] [0-9]”,以确保范围不超过255。

  • 最后一个字段是下一个字段,包含的数字范围为250-255,因此正则表达式的格式为25 [0-5]。

示例

#include<bits/stdc++.h>
using namespace std;
string validIPAddress(string IP) {
   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])");
   if(regex_match(IP, ipv4))
      return "IPv4";
   else
      return "Not";
}
int main(){
   string IP= “172.16.254.1”;
   string ans= validIPAddress(IP);
   cout<<ans<<endl;
   return 0;
}
输出结果

运行上面的代码将生成如下输出:

IPv4

由于输入的IP地址是有效IP地址,因此我们将返回“ IPv4”。