我有一些用于表单字段验证的正则表达式。
我有一个单元测试来定义预期的结果
NSArray *suiteWebs = [NSArray arrayWithObjects:
@"http://webapp.stackoverflow.net",
@"http://webapp.stackoverflow.net/info.php",
@"http://www.stackoverflow.net",
@"http://www.stackoverflow.net/",
@"https://webapp.stackoverflow.net",
@"https://webapp.stackoverflow.net/info.php",
@"https://www.stackoverflow.net",
@"https://www.stackoverflow.net/"
@"webapp.stackoverflow.net",
@"webapp.stackoverflow.net/info.php",
@"www.stackoverflow.net",
@"www.stackoverflow.net/",
@"www.stack-overflow.com",
@"www.stackoverflow_.com",
@"www.stackover_flow.com",
nil];
NSArray *falseSuiteWebs = [NSArray arrayWithObjects:
@"ftp://webapp.stackoverflow.net",
@"http:/www.stackoverflow.net",
@"ftps://webapp.stackoverflow.net",
@"https:/www.stackoverflow.net",
nil];
for (NSString *web in suiteWebs) {
NSLog(@"Validating web %@", web);
STAssertTrue([TSAddEntityForm validateWeb:web withPatter:currentRegex], [NSString stringWithFormat:@"currentRegex web %@", web]);
}
for (NSString *web in falseSuiteWebs) {
NSLog(@"Validating web %@", web);
STAssertFalse([TSAddEntityForm validateWeb:web withPatter:currentRegex], [NSString stringWithFormat:@"currentRegex web %@", web]);
}
我的实际正则表达式是下一个:
NSString *webRegex4 = @"((http|https)://){0,1}((\\w)*|([0-9]*)|([\\-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([\\-|_])*))+";
我的问题与域有关 - 我的正则表达式不验证它。例如 url www.stack-overflow.com 被拒绝
有什么建议么?
谢谢