Теоретически возможно использование расширения поля в сочетании с псевдонимами поля , например:
?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 в вышеуказанном запросе, запускает его ...
Но вопрос не так прост как принятие a.b.c.d
... существует путь больше форм, чем Вы поняли.
Но конечно это - Google для него вопрос? В значительной степени каждая regex краткая информация можно найти где угодно IP использования как пример! ipv4 + regex попадает в 183 000 целей!
Я сделал это прежде, но мне нравится сообщение 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, что это, как предполагается, делает.
В.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)
}
Для 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.
@unsliced: верный, эта проблема может стать немного сумасшедшей.
Если действительно необходимо обработать какой-либо возможный IP-адрес затем, необходимо будет соединить что-то более сложное.
Однако, если Вы просто хотите сделать основную проверку, чтобы удостовериться, что пользователи вводят правильно отформатированные данные, я думаю, что справедливо ограничить их a.b.c.d моделью с вышеупомянутыми регулярными выражениями.
@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
Начиная с, половину которого 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)
}
IPv4 становится: /\d\d?\d?.\d\d?\d?.\d\d?\d?.\d\d?\d?/
Я не уверен в правилах IPv6.