从www.开始验证iOS的url



我希望url以www开头,以任何类型结尾,如.com、.co等

example-www.example.com或任何其他网站。

我试过

-(BOOL) validateUrl: (NSString *) candidate {
NSString *urlRegEx =
@"(http|https)://((\w)*|([0-9]*)|([-|_])*)+([\.|/]((\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
return [urlTest evaluateWithObject:candidate];
}

但它适用于http和https

正则表达式非常强大,但对于这种简单的情况,两个类别方法如何。

@implementation NSString (SuffixTest)
- (BOOL)jc_startsWithAnyOf:(NSArray*)prefixes
{
    for (NSString *candidate in prefixes) {
        if ([self hasPrefix:candidate]) {
            return YES;
        }
    }
    return NO;
}
- (BOOL)jc_endsWithAnyOf:(NSArray *)suffixes
{
    for (NSString *candidate in suffixes) {
        if ([self hasSuffix:candidate]) {
            return YES;
        }
    }
    return NO;
}

@end

然后用作:

- (BOOL)isValidAddress:(NSString*)string
{
    return [string jc_startsWithAnyOf:@[@"http://www.", @"https://www."]] && 
        [string jc_endsWithAnyOf:@[@"com", @"org"]];
}

稍微详细一点,但至少不需要查阅正则表达式文档来理解代码。

此Regex适用于所有带有或不带有http、https、www.的有效url。

Regex=@"(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/?)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))*(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’])*)";

最新更新