フォーム フィールドの検証用の正規表現がいくつかあります。
期待される結果を定義する単体テストがあります
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 は拒否されます
助言がありますか?
ありがとうございました