Проверка IPv4-адресов с помощью regexp

Я пытался получить эффективное регулярное выражение для проверки IPv4, но без особого успеха. В какой-то момент мне показалось, что это было с (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]? (\ . | $)) {4} , но это дает некоторые странные результаты:

$ grep --version
grep (GNU grep) 2.7
$ 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
$ 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
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.255.255
$ 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

Я провел поиск, чтобы узнать, был ли этот вопрос уже задан и дан ответ, но другие ответы, кажется, просто показывают, как определить 4 группы 1-3 числа, либо у меня не работают.

60
задан Alex Harvey 10 May 2019 в 08:50
поделиться