可能性の重複:のObjective-Cでは
How to validate an url on the iPhone文字列がURLである場合 - Objective-Cの
与えられた文字列が表示された場合、誰がテストする良い方法を持っていませんURLにするには?
可能性の重複:のObjective-Cでは
How to validate an url on the iPhone文字列がURLである場合 - Objective-Cの
与えられた文字列が表示された場合、誰がテストする良い方法を持っていませんURLにするには?
正規表現を使用できます。 iPhone 3以降では、フレームワークなしで実行できます。それ以外の場合はRegexKitLiteなどを使用してください。
"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
フレームワークなしでそれをやって:
- (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];
}
この操作を行います。
NSURL* url = [NSURL URLWithString:stringToTest];
if (url && url.scheme && url.host)//This comparision never fails
{
//the url is ok
NSLog(@"%@ is a valid URL", yourUrlString);
}
をstringToTest
が実際にURLの場合は期待通り、その後、URLがインスタンス化されます。それ以外の場合は+[NSURL URLWithString:]
return nil
です。
ココアタッチのほとんどのメソッドは、無効な入力でnil
を返しますが、ほとんど実際にはNSInvalidArgumentException
がスローされます。それぞれのメソッドは、無効な入力で返されるもので文書化されています。
ニース
はここでチェックURLの正規表現パターンです。 NSURLを使用してURL文字列を検証することは決して考えられませんでした。 –
これは任意のURLを検証することを覚えておいてください。したがって、たとえそれがファイルURLまたはWeb URLであっても、この形式の検査で真となることを検証します。 PeyloWの答えは正しいです。私は、Web URLがNSURLが受け入れる唯一のタイプではないことを知らせたいと思います。 –
また、部分URLと相対URLを検証することにも注意してください。したがって、スキーマやドメインのチェックがあることも良い方法です。 – PeyloW
PeyloWの記述どおりに 'NSURL'を使用してください。 NSURLは、完全なURL標準を処理するように設計されています。ホイールを再発明しないのが最善です。 – bbum
真実^^私はNSUrlを忘れてしまった。何らかの理由であなたがリラックスしたい場合(または厳密にするために、NSUrlはhttpとhttps以外の接頭辞を受け入れます)、あなた自身のパターンを定義できるようにするためには、妥当性検査標準を使用してください。 – mattacular
Yah - おそらく、標準を受け入れる式を[おそらくもっと複雑な]式で開始し、非標準のURLをサポートするためにバックオフしたいと思うでしょう。または、無効なURLのソースを修正することをおすすめします。 :) – bbum