Как сопоставить адреса IPv4

Я пытаюсь, чтобы мое регулярное выражение соответствовало следующему:

169.254.0.0-169.254.254.255

Может ли кто-нибудь помочь, пожалуйста, как я могу добиться этого.

пока у меня есть это:

169\.254\.([1-9]{1,2}|[1-9]{1,2}[1-4])

но он также выбрал бы 169.254.255.1, который не должен быть одним из матчей.

Пожалуйста помоги!

Спасибо

 jww12 нояб. 2018 г., 10:17

Ответы на вопрос(3)

(([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]?){4}

Сломать:

1.`[0-9](?!\d)`       -> Any Number 0 through 9 (The `(?!\d)` makes sure it only grabs stand alone digits)
2.`|[1-9][0-9](?!\d)` -> Or any number 10-99 (The `(?!\d)` makes sure it only grabs double digit entries)
3.`|1[0-9]{2}`        -> Or any number 100-199
4.`|2[0-4][0-9]`      -> Or any number 200-249
5.`|25[0-5]`          -> Or any number 250-255
6.`[.]?`              -> With or without a `.`
7.`{4}`               -> Lines 1-6 exactly 4 times

Это добраяНе удалось выполнить проверку IP-адреса.

Для вашего конкретного случая это должно сделать это:

(169\.254\.)((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}|2[0-4][0-9]|25[0-4])[.])(([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}|2[0-4][0-9]|25[0-5])))

Это очень долго, потому что я не могt выяснить, как получить 169.254. (0-254) .255 для проверки, не получая 169.254.255.1 для сбоя

Редактировать: Исправлено из-за комментариев

 SeanC31 окт. 2012 г., 21:14
+1 гораздо более полный, чем мой ответ
 Nick01 нояб. 2012 г., 17:47
На самом деле, я думал об этом и понял, что нет никаких причин, по которым я не могне делайте негативных взглядов после каждого сета. Теперь он должен правильно задать точку между октетами. Я проверил это быстро, и оно правильно отклоняет два приведенных вами примера.
 ridgerunner01 нояб. 2012 г., 17:32
Не применяет точки между октетами - то есть ошибочно совпадает:1111111111100.1111111, так далее.
 Nick01 нояб. 2012 г., 17:43
Да, я настроил 2-й для его случая, чтобы заставить. между октетами, но для основного я неЯ не хочу форсировать это. Для основного этоЭто компромисс, потому что мне пришлось бы почти удвоить размер регулярного выражения, чтобы заставить. между октетами. Мне было легче проверить###.###.###.### перед проверкой правильности самого IP-адреса, чем для проверки IP-адреса и. в то же время. В моей среде у меня гораздо больше контроля над вводом, и ям в основном проверить, чтобы убедиться,523 А не было»Ввести в электронную таблицу вместо.253

которая предоставляет регулярные выражения для всех компонентов универсального URI (как определено вRFC3986: унифицированный идентификатор ресурса (URI): общий синтаксис)

Увидеть:Проверка URI регулярного выражения

Одним из компонентов универсального URI является адрес IPv4. Вот версия Python в свободном пространстве из этой статьи:

re_python_rfc3986_IPv4address = re.compile(r""" ^
    # RFC-3986 URI component:  IPv4address
    (?: (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) \.){3}  # (dec-octet "."){3}
        (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)         # dec-octet "."
    $ """, re.VERBOSE)

И без комментариев версия JavaScript:

var re_js_rfc3986_IPv4address = /^(?:(?: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]?)$/;

([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]) соответствует 0-254.

увидетьэта страница для дальнейшего обсуждения

 SeanC31 окт. 2012 г., 21:04
Я бы повторил тест дважды, и последняя цифра во 2-м разделе изменилась на 5 для 255 совпадений:169\.254\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
 user178956401 нояб. 2012 г., 03:09
Большое спасибо, этот, кажется, работает нормально.
 user178956431 окт. 2012 г., 20:37
его соответствие 169.254.25 для 169.254.255.1. Какие-нибудь мысли?

Ваш ответ на вопрос