URLを検証する正規表現を作成しました。
example.com
www.example.com
4つすべてが機能しています
今、(www.example.com--thisisincorrect)のようなテキストを入力している場合、dbに入力して保存することができます
私が使用した正規表現は次のとおりです。
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
そして
([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
助けてください!
URLに正規表現は必要ありません。これにはSystem.Uri
クラスを使用してください。例えば。このために Uri.IsWellFormedUriString
メソッドを使用します。
bool isUri = Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute);
最高の正規表現:
private bool IsUrlValid(string url)
{
string pattern = @"^(http|https|ftp|)\://|[a-zA-Z0-9\-\.]+\.[a-zA-Z](:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$";
Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return reg.IsMatch(url);
}
厳密なマッチングのために正規表現を作成する場合、「^」で始まり「$」で終わることを確認する必要があります。そうでない場合、正規表現は一致する部分文字列を見つけるかどうかを確認します。
ただし、正規表現を使用してURLを一致させるとエラーが発生しやすくなります。既存のフレームワークがより適切に機能するようになります(パラメーター、未知のドメイン、ドメインの代わりにIPを含むURLなど、URLに潜在的なトラップがたくさんあります....)
それを試してください:
bool IsValidURL(string URL)
{
string Pattern = @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$";
Regex Rgx = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return Rgx.IsMatch(URL);
}
次のようなURLを受け入れます。
あなたはこれを探しています
HTTPなし:
@"^(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$"
Httpで:
@"^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$"
または
@"^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$";
私はリンクを見つけるものを作りました-私は非常にうまくいきます:
(\b(http|ftp|https):(\/\/|\\\\)[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?|\bwww\.[^\s])
これは私のために働く:
string pattern = @"^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$";
Regex regex = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
string url= txtAddressBar.Text.Trim();
if(regex.IsMatch(url)
{
//do something
}
これは、オプションとしてhttp、httpsの両方をサポートし、URLに空白スペースが含まれていないことを検証するためです。
this.isValidURL = function (url) {
if (!url) return false;
const expression = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/gm;
return url.match(new RegExp(expression));
}