RegEx检测语法正确的URL

Gib*_*boK 1 c# regex asp.net

我使用Asp.net 4和C#Web Forms.

在我的Web应用程序中,用户可以使用TextBox添加URL.

我需要确保插入的每个值都具有语法正确的URL格式(我不需要检查URL是否确实存在).

因此,作为第一条规则,我想使用CustomValidator Controlif 检查用户插入的输入在开头是否具有值字符串"http://".

我的问题?

  • 你能为我提供一个RegEx来添加到我的CustomValidator Control中,它只允许传递以"http://"开头的字符串吗?

  • 你有任何其他规则使用RegEx建议我吗?

  • 检测语法正确的URL的最佳做法是什么?

谢谢你的帮助

Jon*_*nna 9

在许多方面更简单的方法,并且对以后的更改更灵活,就是尝试它并看到:

public static bool IsValidHttpUri(string uriString)
{
  Uri test = null;
  return Uri.TryCreate(uriString, UriKind.Absolute, out test) && test.Scheme == "http";
)
Run Code Online (Sandbox Code Playgroud)

使用Uri.IsWellFormedUriString更容易,但不检查您的URI必须是HTTP的要求.

编辑:哦,这是否认为IRI有效取决于配置,请参阅http://msdn.microsoft.com/en-us/library/system.uri.aspx上的"国际资源标识符支持"部分作为规则,无论您是否希望它们被认为是有效的,都会匹配此配置设置,因此在大多数情况下这实际上是一个好处.