У Ruby уже есть необходимое регулярное выражение в стандартной библиотеке. Оформить заказ resolv .
require "resolv"
"192.168.1.1" =~ Resolv::IPv4::Regex ? true : false #=> true
"192.168.1.500" =~ Resolv::IPv4::Regex ? true : false #=> false
"ff02::1" =~ Resolv::IPv6::Regex ? true : false #=> true
"ff02::1::1" =~ Resolv::IPv6::Regex ? true : false #=> false
Если вам нравится короткий путь ...
require "resolv"
!!("192.168.1.1" =~ Resolv::IPv4::Regex) #=> true
!!("192.168.1.500" =~ Resolv::IPv4::Regex) #=> false
!!("ff02::1" =~ Resolv::IPv6::Regex) #=> true
!!("ff02::1::1" =~ Resolv::IPv6::Regex) #=> false
Веселитесь!
Обновление (2018-10-08):
Из комментариев ниже я люблю очень короткую версию:
!!(ip_string =~ Regexp.union([Resolv::IPv4::Regex, Resolv::IPv6::Regex]))
Очень элегантно с рельсами (также ответ снизу):
validates :ip,
:format => {
:with => Regexp.union(Resolv::IPv4::Regex, Resolv::IPv6::Regex)
}
(Это в основном то же самое, что и решение Ханса Эспена выше, но для краткости используются удобные методы)
Поместите это в свой - [UITableViewControllerSubclass viewDidLoad]
method:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundPattern.png"]];
Нет смысла избегать пары автозапусков в методе viewDidLoad, поскольку он вызывается редко (когда представление действительно загружается) и, следовательно, будет иметь незначительное влияние на производительность.
Примечание. На iPhone всегда следует использовать изображения PNG, а не JPEG или любой другой формат.
Вообще-то, у меня все заработало! :)
NSString *backgroundPath = [[NSBundle mainBundle] pathForResource:@"background" ofType:@"jpg"];
UIImage *backgroundImage = [UIImage imageWithContentsOfFile:backgroundPath];
UIColor *backgroundColor = [[UIColor alloc] initWithPatternImage:backgroundImage];
self.tableView.backgroundColor = backgroundColor;
[backgroundColor release];