正規表現を使用してWebサイトのアドレスを検証しています。しかし、iPhoneではフォーマットが正しくないため、機能していません。その論理はほぼ正しいです。誰かがiPhoneで私のためにこの正規表現を再構築できますか?
(?<http>(http:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*)
これをチェックしてください
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
この以下の方法を使用してください
- (BOOL) validateUrl: (NSString *) stringURL {
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:stringURL];
}
これがお役に立てば幸いです...
:)
受け入れられた回答の正規表現に問題がある人のために、ここに私が使用しているバージョンがあります:
(https?)://(([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\{\\}\\?\\<\\>])*)+([\\.|/](([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\{\\}\\?\\<\\>])*))+
受け入れられた回答の正規表現の問題は、次のとおりです。\w-すでに「_」と数字が含まれている
最初のドットの後に「-」が付いているURLの場合は失敗します
これはhttp/https / plainsubdomain.domain.suffixリンクをキャッチします:(Grzegorz Krukowskiによる良い答えに基づく)
@"((https?)://)?(([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\{\\}\\?\\<\\>])*)+([\\.|/](([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\{\\}\\?\\<\\>])+))+"
私の場合、これが決定的な表現です。
NSString *URLRegEx =
@"((https?://www[.][a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9].{2,}[.][a-zA-Z0-9]{2,})|(www[.][a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9].{2,}[.][a-zA-Z0-9]{2,})|([a-zA-Z0-9\-]{2,}[.][a-zA-Z0-9]{2,}))";
一致するケースの例:
一致しない場合:
等...
これらすべてのケースを許可したくない場合は、式からそれらを削除する必要があります。