[ad_1]
エントリが次のような場合に URL が有効か無効かを検証する方法:
www.com – 無効である必要があります
http://ww.try.net – 無効である必要があります
http://winner.com – 有効である必要があります
url = null = 無効にする必要があります
以下は、上記のシナリオを検証しない私が作成した方法です。
よろしくお願いいたします。
私が試したこと:
C#
<pre> public bool IsUrlValid(string webUrl) { if (webUrl == null) return false; return Regex.IsMatch(webUrl, @"(http|https)://(([www\.])?|([\da-z-\.]+))\.([a-z\.]{2,3})$"); }
解決策 1
正規表現パターンに関係なく、組み込み関数があります。 Uri.IsWellFormedUriString メソッド (文字列、UriKind) (システム)[^]
例:
C#
List<string> uris = new List<string>(){"www.com", "http://ww.try.net", "http://winner.com", "url = null"}; var result = uris.Select(x=> new {Uri = x, IsValid = Uri.IsWellFormedUriString(x, UriKind.Absolute)}); foreach(var u in result) { Console.WriteLine("'{0}' is{1}valid", u.Uri, u.IsValid ? " ":" NOT "); }
結果:
'www.com' is NOT valid 'http://ww.try.net' is valid 'http://winner.com' is valid 'url = null' is NOT valid
代わりに正規表現を使用したい場合は、これを使用できます。 ^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$
解決策 2
‘http://ww.try.net’ 自体は有効な URL です。
「www」は、この場所で使用される最も一般的な値にすぎませんが、値なしを含め、任意の値が許可されます。
解決策 3
これを試して:-
文字列パターン = @”/\b(http|https)\:\/\/(www\.)?[a-z]+\.[a-z]{2,3}\b/g”;
// 正規表現オブジェクトをインスタンス化します。
正規表現 r = new Regex(pattern , RegexOptions.IgnoreCase);
// 正規表現パターンをテキスト文字列と照合します。
var m = r.Match(webUrl);
[ad_2]
コメント