
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Validate IPv4 address using ReGex patterns in C++
Given an IP Address, the task is to validate this IP address and check whether it is IPv4 or not with the help of ReGex(Regular Expression). If the IP Address is valid then print “IPv4 Address” otherwise print “Not”.
A valid IPv4 address is an IP in the form "X1.X2.X3.X4" where 0 <= Xi <= 255 and Xi cannot contain leading zeros. For example, "192.168.1.1" and "192.168.1.0" are valid IPv4 addresses but "192.168.01.1", while "192.168.1.00" and "192.168@1.1" are invalid IPv4 addresses. For example,
Input-1 −
IP= “172.15.254.2”
Output −
“IPv4”
Explanation − This is a valid IPv4 address, return “IPv4”.
Input-2 −
IP= “312.25.12.1”
Output −
“Not”
Explanation − This is not a valid IPv4 Address, return “No”.
Approach to solve this problem
To check whether the given IP address is IPv4 or not, we use ReGex. A ReGex is an expression that contains a sequence of characters that define a specific pattern. These patterns can be used in algorithms to match the pattern in a string. It is also widely used for Input Validation.
Range Specification − We can specify the characters to make the patterns in the simplest way. To specify the range by using characters, we can use ‘[ ]’ brackets.
Specifying Characters − The above expression indicates an opening bracket and a digit in the range a to z , ‘A’ to ‘Z’, and ‘0’ to ‘9’ as a regex. [a-z], [A-Z] and [0-9].
Repeated Patterns − An expression modifier can be “+” that suggests matching the occurrence of a pattern one or more times or it can be “*” that suggests matching the occurrence of a pattern zero or more times.
The expression [a-z]* will match a blank string.
If you want to specify a group of characters to match one or more times, then you can use the parentheses as follows −
[Abc]+
Following is the approach to solving this problem,
Take Input a string specifying an IP address.
A string function validIPAddress(string IP) takes an IP address as input and checks whether the input string is valid or not. If it is valid then return “IPv4” otherwise return “Not an IP Address”.
Creating a regex pattern for the IPv4 address. Since an IPv4 address contains 4 fields in which each field contains the value in the range of 0-255. An IPv4 address looks like XXX.XXX.XXX.XXX.
A valid IPv4 address might be in the range (([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0- 5])\.){3} in which the first digit will be in the ranges from 0-9, second 1-9 and third digit in the range of 0-9.
Similarly, for the second field first character would be in the range of 100-199, thus the regex pattern would be ‘1[0-9]-0-9]’
For the next field, the digit will be in the range 200-249. Thus the regex pattern will be ‘2[0-4][0-9]’ which ensures that the range doesn’t exceed a digit more than 255.
The last which is the next field contains digits in the range from 250-255 thus the regex pattern would be 25[0-5].
Example
#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; }
Output
Running the above code will generate the output as,
IPv4
Since the input IP Address is a Valid IP address, we will return “IPv4”.
- Related Articles
- Validate IPv6 address using ReGex patterns in C++
- Validate IP Address in C#
- Validate IP Address in C++
- Transition from IPv4 to IPv6 address
- How to validate an email address in C#?
- How to validate email address using RegExp in JavaScript?
- Validate Email address in Java
- Validate IP Address in Python
- C Program to validate an IP address
- How to validate the IP address using PowerShell?
- How to validate Email Address in Android on EditText using Kotlin?
- How to validate an email address using Java regular expressions.
- How to Match patterns and strings using the RegEx module in Python
- How to validate URL address in JavaScript?
- How to validate email address in JavaScript?
