URL的正则表达式

xor*_*wer 29 c# regex visual-studio

我写了正则表达式验证URL,可能就像

所有4个都在工作

现在,如果我输入的文本(www.example.com - thisisincorrect),它允许我输入并保存到db

我使用的正则表达式是:

http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
Run Code Online (Sandbox Code Playgroud)

([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Ale*_*lex 70

您不需要URL的正则表达式,请使用System.Uri类.例如,通过使用Uri.IsWellFormedUriString方法:

bool isUri = Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute);
Run Code Online (Sandbox Code Playgroud)

  • @Cititanya:根据RFC 2396第3.1节,`ktp`是一个完美的**有效**方案名称.例如,自定义协议可以定义此方案. (7认同)
  • 似乎这只考虑任何有效的东西.Uri.IsWellFormedUriString("anything",UriKind.RelativeOrAbsolute)true (2认同)
  • @AllenTellez,您正在测试的表达式是一个 *valid* 相对 URI。如果要检查绝对 URI,请改用 `UriKind.Absolute`。 (2认同)

Gar*_*een 30

添加^$

^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$
Run Code Online (Sandbox Code Playgroud)

这匹配string(^)和end($)的开头


小智 16

最佳正则表达式:

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 试试 `(http|https|ftp|)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9 )*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?([a-zA- Z0-9\-\?\,\'\/\+&%\$#_]+)`。 (2认同)

Mar*_*cas 11

试试看:

bool IsValidURL(string URL)
{
    string Pattern = @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$";
    Regex Rgx = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
    return Rgx.IsMatch(URL);
}
Run Code Online (Sandbox Code Playgroud)

它将接受这样的 URL:

  • http(s)://www.example.com
  • http(s)://stackoverflow.example.com
  • http(s)://www.example.com/page
  • http(s)://www.example.com/page?id=1&product=2
  • http(s)://www.example.com/page#start
  • http(s)://www.example.com:8080
  • http(s)://127.0.0.1
  • 127.0.0.1
  • www.example.com
  • 例子.com