Bienenstock und regulärer Ausdruck

Ich versuche, alle IP-Adressen in einem Benutzernamen zu filtern. Aber das funktioniert in meiner Abfrage nicht richtig:

select distinct regexp_extract(username, '^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$', 0) from ips. 

Das Problem ist, dass er sogar Nummern als 1000000 als IP-Adresse erkennt. Irgendeine Idee, wie man es repariert?