Как оценить IP?

Теоретически возможно использование расширения поля в сочетании с псевдонимами поля , например:

?fields=reactions.type(LIKE).limit(0).summary(1).as(like),
        reactions.type(WOW).limit(0).summary(1).as(wow),
        reactions.type(SAD).limit(0).summary(1).as(sad),…

. Однако в этом отношении все еще есть некоторые ошибки; Я часто получал «Неизвестная ошибка» при тестировании этого; F.E. заменяя предельное значение для LIKE на 1 в вышеуказанном запросе, запускает его ...

8
задан fat 10 October 2017 в 09:34
поделиться

8 ответов

Но вопрос не так прост как принятие a.b.c.d ... существует путь больше форм, чем Вы поняли.

Но конечно это - Google для него вопрос? В значительной степени каждая regex краткая информация можно найти где угодно IP использования как пример! ipv4 + regex попадает в 183 000 целей!

3
ответ дан 5 December 2019 в 09:27
поделиться

Я сделал это прежде, но мне нравится сообщение Raymond Chen в:

http://blogs.msdn.com/oldnewthing/archive/2006/05/22/603788.aspx

Где он в основном рекомендует использовать regexes для того, к чему они способны: парсинг маркеры. Затем оцените результаты. Его пример:

function isDottedIPv4(s)
{
 var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
 return match != null &&
        match[1] <= 255 && match[2] <= 255 &&
        match[3] <= 255 && match[4] <= 255;
}

Намного легче посмотреть на это и grok, что это, как предполагается, делает.

6
ответ дан 5 December 2019 в 09:27
поделиться

В.NET существует тип IPAddress, который имеет удобный метод TryParse.

Пример:

if(System.Net.IPAddress.TryParse(PossibleIPAddress, validatedIPAddress)){
    //validatedIPAddress is good
}

// or more simply:
bool IsValidIPAddress(string possibleIP){
    return System.Net.IPAddress.TryParse(PossibleIPAddress, null)
}
6
ответ дан 5 December 2019 в 09:27
поделиться

Для IPv4 можно использовать это регулярное выражение.

\b(?:(?: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]?)\b

Это выглядит довольно сложным, но это работает путем ограничения каждой четверки номерами 0-255.

4
ответ дан 5 December 2019 в 09:27
поделиться

@unsliced: верный, эта проблема может стать немного сумасшедшей.

Если действительно необходимо обработать какой-либо возможный IP-адрес затем, необходимо будет соединить что-то более сложное.

Однако, если Вы просто хотите сделать основную проверку, чтобы удостовериться, что пользователи вводят правильно отформатированные данные, я думаю, что справедливо ограничить их a.b.c.d моделью с вышеупомянутыми регулярными выражениями.

0
ответ дан 5 December 2019 в 09:27
поделиться

@unsliced, который корректен однако, это будет, конечно, зависеть от реализации при парсинге IP от пользователя, посещающего сайт затем Ваш, прекрасны для использования regex, как это ДОЛЖНО быть в x.x.x.x формате.

Для IPv6 Вы могли использовать это

[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}

однако это не ловит все, потому что с IPv6 это намного более сложно, соответственно к Википедии, все следующие примеры технически корректны однако, regex выше только поймает тех с *

2001:0db8:0000:0000:0000:0000:1428:57ab*
2001:0db8:0000:0000:0000::1428:57ab*
2001:0db8:0:0:0:0:1428:57ab*
2001:0db8:0:0::1428:57ab
2001:0db8::1428:57ab
2001:db8::1428:57ab
0
ответ дан 5 December 2019 в 09:27
поделиться

Начиная с, половину которого regex обрабатывает то, что последний сегмент не имеет периода в конце, Вы могли сократить его в половине при прикреплении a'.' в конец возможного IP-адреса.

Что-то вроде этого:

bool IsValidIPAddress(string possibleIP){
  CrazyRegex = \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){4}\b
  return Regex.Match(possibleIP+'.', CrazyRegex)
}
0
ответ дан 5 December 2019 в 09:27
поделиться

IPv4 становится: /\d\d?\d?.\d\d?\d?.\d\d?\d?.\d\d?\d?/

Я не уверен в правилах IPv6.

-1
ответ дан 5 December 2019 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: