用于Url检查的正则表达式

时间:2014-01-10 14:50:54

标签: c# regex url-validation

在我的“ServiceEditModel”类中,我有一个带有typeof Uri的属性Url。为了验证,我搜索一个Regex,检查填写在我的“编辑”页面上的Url是否有效。
正则表达式应该检查

  1. 是否有http://或https://
  2. 主体只包含字母字符和数字
  3. 结尾就像例如.com,.net,.ch
  4. 应该有可能,结尾后面还有另一个参数,例如https://stackoverflow.com/questions
  5. Regex所在的我的代码如下所示:

    [Required(ErrorMessageResourceType = typeof(Resources.ApplicationTemplate), ErrorMessageResourceName = "UrlRequired")]
    [RegularExpression("REGEX COMES HERE", ErrorMessageResourceType = typeof(Resources.ApplicationTemplate), ErrorMessageResourceName = "InvalidUrl")]
    public Uri Url { get; set; }
    

    我已经找过正则表达但却找不到合适的正则表达,因为这实际上是我对Regex的第一次体验。

    感谢您的帮助!

    修改

    我更新了我的正则表达式,以便它还允许带有“ - ”字符的网址,例如http://www.comsoft-direct.ch/

    更新了正则表达式:^(http|https):\/\/([\w\d + (\-)+?]+\.)+[\w]+(\/.*)?$

1 个答案:

答案 0 :(得分:4)

此正则表达式应根据您的约束检查简单方案。你可以很容易地玩它并改进它(我强烈推荐,首先是因为它在这种状态下非常简单,其次是因为你是一个正则表达式的初学者:))

^(http|https):\/\/[\w\d]+\.[\w]+(\/[\w\d]+)$

Regex 101

上查看

基本解释:

(http|https):\/\/

应以httphttps开头,然后是://

[\w\d]+

后跟N个字母和/或数字

\.[\w]+

后跟一个dot和一组字母。例如:.com.net等(请注意,您必须更改为\.[\d\w]+以允许数字)

(\/[\w\d]+)

跟随,可选/和一组字母和/或数字(例如:/questions

注意:如果您想要一个完整的通用网址验证器,那么您必须谷歌。