BASH - Functions - IP Validity

#!/usr/bin/env bash
 
ip=${1:-1.2.3.4}
 
ip_valid() {
  # Set up local variables
  local ip=${1:-1.2.3.4}
  local IFS=.; local -a a=($ip)
  # Start with a regex format test
  [[ $ip =~ ^[0-9]+(\.[0-9]+){3}$ ]] || return 1
  # Test values of quads
  local quad
  for quad in {0..3}; do
    [[ "${a[$quad]}" -gt 255 ]] && return 1
  done
  return 0
}
 
if ip_valid "$ip"; then
  echo "success ($ip)"
  exit 0
else
  echo "fail ($ip)"
  exit 1
fi

NOTE: Alternative regex is to change:

[[ $ip =~ ^[0-9]+(\.[0-9]+){3}$ ]] || return 1

to

[[ $ip =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}$ ]] || return 1

or

^[1-9][0-9]{,2}(\.[1-9][0-9]{,2}){3}$

to avoid leading zeroes in a quad.