Ну вот мне бы в Вашу реальность, в которой публичный диапазон не отличается от приватного, тогда бы я просто вбил [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} и не морочился.
@GavriKos регулярка: (^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.) возвратит приватные диапазоны, специфика задачи такова, чтобы искать именно публичные адреса.
@DukeRaul Зависит от того как использовать регулярку. Если строка является ip адресом, но не подходит под эту регулярку значит это белый адрес, разве не так?