Validando endereços IPv4 com regexp

Estou tentando obter um regex eficiente para validação de IPv4, mas sem muita sorte. Parecia que em um ponto eu já o tinha com(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}, mas produz alguns resultados estranhos:

[chris@helios bashscripts]$ grep --version
grep (GNU grep) 2.7


[chris@helios bashscripts]$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.1
192.168.1.1
[chris@helios bashscripts]$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.255
192.168.1.255
[chris@helios bashscripts]$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.255.255
[chris@helios bashscripts]$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.2555
192.168.1.2555

Fiz uma pesquisa para verificar se isso já havia sido solicitado e respondido, mas outras respostas parecem simplesmente mostrar como determinar 4 grupos de 1 a 3 números ou não funcionam para mi

Alguma ideia? Obrigado

questionAnswers(30)

yourAnswerToTheQuestion