/
# Match ipv4 IP addresses
# Specifically capture private IPs before matching the more global
# 0.0.0.0 - 255.255.255.255 octet ranges.
^(?P<private_10_ip>
  10\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
)$
|
^(?P<private_169_ip>
  169\.
  254\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
)$
|
^(?P<private_172_ip>
  172\.
  (?:1[6-9]|2[0-9]|3[0-1])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
)$
|
^(?P<private_192_ip>
  192\.
  168\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
)$
|
^(?P<all_ip>
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.
  (?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])
)$
/
gmx