Regex для проверки IP с диапазоном? - PullRequest
3 голосов
/ 22 июня 2010

Мне нужен шаблон регулярных выражений, который проверяет IP-адреса.Это достаточно легко для Google, но у меня есть небольшая загвоздка.Мне нужны последние цифры, чтобы можно было принять диапазон.Таким образом, следующие входные данные подтвердят:нет для обработки диапазонов.

Ответы [ 3 ]

4 голосов
/ 22 июня 2010

Чтобы принять число от 0 до 255, я бы использовал (25[0-5]|2[0-4]\d|[0-1]?\d{1,2}). Вызов приведенного выше выражения A, регулярное выражение для диапазона IP-адресов будет выглядеть как

A\.A\.A\.A-A

или

(A\.){3}A-A

Если диапазон является необязательным, используйте (-A)? вместо -A.

Это не проверяет, меньше ли начало диапазона, чем конец, но это невозможно сделать в Regex с разумными усилиями.

3 голосов
/ 22 июня 2010

Ну, тогда это будет просто:

(normal-ip-regex)-[0-9]+

Если вам нужно что-то более сложное, чем это, я бы сказал, что вам лучше всего на самом деле разобрать числа и проверить их таким образом(например, если вы хотите убедиться, что «X» меньше, чем «Y», то нет способа сделать это с помощью регулярного выражения).

2 голосов
/ 22 июня 2010

«Лучшим» способом проверки IP-адресов является преобразование их в целое число.Помните, что точечная нотация просто для того, чтобы людям было легче читать.

Я не знаю, какой язык вы используете, но у большинства будет что-то вроде функции inet_aton для преобразования из нотационной точки вцелое число (которое неявно проверяет правильный формат).

Если у вас есть адрес в виде целого числа, вы можете проверить, что он находится в допустимом диапазоне, так же, как вы проверяете любое другое целое число (<и>,скорее всего).

...