Что такое регулярное выражение, которое может найти только маршрутизируемые адреса IPv4? EG, не соответствует 192.0.2.1/24, 127.0.0.1 и т. Д. Google, похоже, обнаруживает, что все слишком распространенное регулярное выражение «является ip-адресом».Regex for IPv4 Только адрес маршрутизации
1
A
ответ
3
Попытка реализовать бизнес-правила в регулярном выражении - плохая идея.
Просто проанализируйте IP-адрес и проверьте, удовлетворяет ли он вашим критериям в коде.
0
Вы не можете делать это в регулярном выражении в любом случае, а не эффективно. Проанализируйте его, затем проверьте специальные адреса (многоадресная рассылка, RFC 1918 и т. Д.).
0
Попробуйте это:
^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(?<!172\.(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31))(?<!127)(?<!^10)(?<!^0)\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(?<!192\.168)(?<!172\.(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31))\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(?<!\.0$)(?<!\.255$)$
Это правильно не соответствует это недопустимые IP-адреса:
999.999.999.999.
108.0.0.01
0.1.2.3
00.0000.00.00
192.168.1.1
912.456.123.123
.3.3.3.0
3.2.2.0
192.168.0.0
18.16.0.0
Это не соответствуют локальных IP-адресов:
172.16.0.9
172.16.4.1
172.17.1.1
127.0.0.2
10.0.1.5
10.0.0.1
10.155.155.155
10.255.255.254
172.16.0.4
172.16.0.1
172.17.1.1
172.31.254.254
Наконец-то это не соответствует широковещательные IP-адреса:
60.123.247.255
196.168.255.255
10.255.255.255
192.168.255.255
Любой другой IP я опробованных это матч до сих пор, но я не сделал это тщательно, так что могут быть некоторые ошибки.
Смежные вопросы
- 1. Grep Regex for Mac Адрес
- 2. IPv4 regex в bash
- 3. Regex to ТОЛЬКО соответствует PUBLIC IPv4-адресу
- 4. Получить IPv4-адрес клиента
- 5. Когда закончится IPv4-адрес?
- 6. Проверка IPv4 с использованием regex
- 7. Pseudo-IPv4 regex
- 8. IPv4-адрес с PHP
- 9. VB.Net Return IPv4 Адрес
- 10. IPv4-адрес автоматически изменяется
- 11. Regex для извлечения только адресов IPv4 из текста
- 12. Regex: Как я могу сопоставить третий IPv4-адрес?
- 13. Как преобразовать адрес IPV6 в адрес IPV4?
- 14. Возможно ли каким-либо образом преобразовать адрес IPV6 в адрес IPV4 или восстановить адрес IPV4 всегда?
- 15. Как получить IPv4-адрес клиента?
- 16. IPv4 адрес замещения в сценарии Python
- 17. URL-адрес маршрутизации работает только в localhost
- 18. Как преобразовать IPv4-отображаемый-IPv6-адрес в IPv4 (строковый формат)?
- 19. Как получить только адреса IPv4
- 20. Попытка получить мой адрес IPv4 получает VirtualBox в IPv4
- 21. сравнить IPv4 адрес в C#
- 22. remote_addr не возвращает адрес IPv4
- 23. Получить IPV4 Адрес по умолчанию
- 24. IPv4 удаленный адрес в WCF
- 25. Получить/Установить андроид адрес IPv4
- 26. Inet6Address.getByName() возвращает (существующий) IPv6, но только адрес IPv4?
- 27. И Dns.GetHostAddress, и Dns.GetHostEntry возвращают только адрес ipv4. Как получить оба адреса ipv4 и ipv6?
- 28. Пытается получить IPv4-адрес из заданного IPv4-адреса IPv6-адреса
- 29. Как определить адрес клиента ipv4 и ipv6?
- 30. Regex for absolute url
Это не похоже на очевидный прецедент для регулярного выражения. По какой причине у вас есть *, чтобы сделать это с помощью регулярного выражения? –
Я подумал, что это лучший способ, но из ответа Анона я думаю, что теперь есть лучший способ. – Zombies