IP Address Regular Expressions

Regular expressions for validating IPv4 and IPv6 address formats, supporting IP address validation needs in network programming and system administration

IntermediateNetwork
IPv4 Regular Expression
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
IPv6 Regular Expression
^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$
Regex Pattern Explanation

IPv4 Pattern Analysis:

  • (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) - Matches numbers 0-255
  • 25[0-5] - Matches 250-255
  • 2[0-4][0-9] - Matches 200-249
  • [01]?[0-9][0-9]? - Matches 0-199
  • \.3 - Matches three dot separators
  • ^ and $ - Ensures complete match

IPv6 Pattern Analysis:

  • [0-9a-fA-F]4 - 1-4 hexadecimal digits
  • : - Colon separator
  • {7} - Repeat 7 times (8 groups)
  • ::1 - IPv6 loopback address
  • :: - IPv6 zero address
  • Note: This is a simplified version, complete IPv6 is more complex
Online Testing Tool
Code Examples

javascript

// IPv4 validation
const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

function validateIPv4(ip) {
  return ipv4Regex.test(ip);
}

// IPv6 validation
const ipv6Regex = /^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$/;

function validateIPv6(ip) {
  return ipv6Regex.test(ip);
}

// Usage examples
console.log(validateIPv4("192.168.1.1")); // true
console.log(validateIPv6("2001:0db8:85a3::8a2e:0370:7334")); // true

python

import re

# IPv4 validation
ipv4_pattern = r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'

def validate_ipv4(ip):
    return bool(re.match(ipv4_pattern, ip))

# IPv6 validation
ipv6_pattern = r'^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$'

def validate_ipv6(ip):
    return bool(re.match(ipv6_pattern, ip))

# Usage examples
print(validate_ipv4("192.168.1.1"))  # True
print(validate_ipv6("2001:0db8:85a3::8a2e:0370:7334"))  # True

java

import java.util.regex.Pattern;

public class IPValidator {
    // IPv4 validation
    private static final String IPV4_PATTERN = 
        "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
    
    private static final Pattern ipv4Pattern = Pattern.compile(IPV4_PATTERN);
    
    public static boolean validateIPv4(String ip) {
        return ipv4Pattern.matcher(ip).matches();
    }
    
    // IPv6 validation
    private static final String IPV6_PATTERN = 
        "^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$";
    
    private static final Pattern ipv6Pattern = Pattern.compile(IPV6_PATTERN);
    
    public static boolean validateIPv6(String ip) {
        return ipv6Pattern.matcher(ip).matches();
    }
}
Test Cases
InputTypeExpected ResultDescription
192.168.1.1IPv4✓ ValidStandard private IP address
10.0.0.1IPv4✓ ValidPrivate network address
172.16.0.1IPv4✓ ValidPrivate network address
8.8.8.8IPv4✓ ValidGoogle DNS
255.255.255.255IPv4✓ ValidBroadcast address
0.0.0.0IPv4✓ ValidDefault route
256.1.1.1IPv4✗ InvalidOut of range
192.168.1IPv4✗ InvalidIncomplete IP
2001:0db8:85a3::8a2e:0370:7334IPv6✓ ValidStandard IPv6 address
::1IPv6✓ ValidIPv6 loopback address
::IPv6✓ ValidIPv6 zero address
2001:db8::1IPv6✗ InvalidSimplified format (requires more complex regex)