Функция PHP для проверки IPv4 и IPv6 с помощью регулярных выражений

Мне нужно создать функцию для IPv4 и v6, что я использую локальные IP-адреса.

То, что я знаю, это действительные диапазоны IPv4 от 0.0.0.0 до 255.255.255.255. Однако то, что я знаю об IPv6, ограничено, поскольку, несмотря на то, что он существует какое-то время, я не особо изучал его до сегодняшнего дня, у. Но я хочу доказать в будущем ту функцию, которую я делаю, и в то же время оставить ее в стиле ретро. Я не уверен, что допустимые диапазоны для IPv6.

Во всяком случае в целом то, что я думаю, является функцией в той степени,

function validateIP($ip, $vSix = NULL)
{
    if($vSix !== NULL)
    {
      if(preg_match([regex-to-validate-ipv6], $ip))
      {
        return true;
      }
      else
      {
        return false;
      }
    }

    if(preg_match([regex-to-validate-ipv4], $ip))
    {
      return true;
    }
    else
    {
      return false;
    }
}

моя вещь в том, что я отстой с регулярным выражением, поэтому я понятия не имею, как написать тот, который будет проверять v4 или 6. Также было бы неплохо проверить работоспособность вышеупомянутой концепции функции.