У меня есть регулярное выражение, которое я использовал в одном из ответов здесь, в SO.В основном, мое регулярное выражение должно проверять адрес ipv4 с маской.
Итак, я использовал следующее регулярное выражение:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/([1-9]|1[0-9]|2[0-9]|3[0-2]|(((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(0|128|192|224|240|248|252|254)\.0\.0)|(255\.255\.(0|128|192|224|240|248|252|254)\.0)|(255\.255\.255\.(0|128|192|224|240|248|252|254))))
Теперь моя задача состоит в том, чтобы не допустить 0 в последней цифре ip, т.е. 192.168.6.10/mask
допустимо, но 192.168.6.0/mask
неверно
Поэтому я изменил приведенное выше регулярное выражение на что-то вроде этого:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]|[1-9]?)/([1-9]|1[0-9]|2[0-9]|3[0-2]|(((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(0|128|192|224|240|248|252|254)\.0\.0)|(255\.255\.(0|128|192|224|240|248|252|254)\.0)|(255\.255\.255\.(0|128|192|224|240|248|252|254))))
, но 192.168.6.0
всегда действует при тестировании с AngularValidators.pattern
Есть идеи, где я ошибаюсь?
РЕДАКТИРОВАТЬ Список IP-адресов и их действительность:
192.168.6.6 / 24 isдействительный 192.168.6.6/24 действительный 192.168.6.24/24 действительный
192.168.6.0 / 24 недействительный 192.168.6.0/255.255.255.0 недействительный