6

この方法で URL を検証しようとしています:

コード:

- (BOOL) validateUrl: (NSString *) candidate {

    NSString *urlRegEx=
    @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)";

    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate];

}

機能しません。問題は正規表現にあると思います。

4

4 に答える 4

13

文字列が不正な形式である場合 に返される+ (id)URLWithString:(NSString *)URLStringメソッド ofを使用できます。NSURLnil

if (URL && URL.scheme && URL.host)URL の確認に使用します。

于 2011-11-22T09:42:32.840 に答える
6

これで試してみてください..

- (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];
}

それはあなたを助けるかもしれません。

于 2011-11-22T09:43:51.123 に答える
1

以下を使用するとどうなりますか:

NSURL * url = [NSURL URLWithString:@" http://www.google.com "];

BOOL isValid = [UIApplication.sharedApplication canOpenURL:url];

注:ベストプラクティスは正規表現を使用することです

于 2018-10-19T22:02:59.183 に答える
0
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
于 2012-06-29T15:13:22.960 に答える