asp.net中匹配URL网址的正则表达式

 更新时间:2016年10月31日 23:42:56   投稿:mdxy-dxy  
最近在做一些关于URL匹配的项目,本来对正则表达式了解的不多,上网搜索了好多前辈写的正则表达式,发现很少能被我使用的,现将我自己写的正则表达式贴出来,供大家参考

%<本人做的是asp.net的项目,内容是阻止一个文本框中的某些URL>%

首先,正则表达式:

String check = @"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?";

关于该正则表达式的说明:

①:该正则表达式匹配的字符串必须以http://、https://、ftp://开头;
②:该正则表达式能匹配URL或者IP地址;(如:http://www.baidu.com 或者 http://192.168.1.1)
③:该正则表达式能匹配到URL的末尾,即能匹配到子URL;(如能匹配:http://www.baidu.com/s?wd=a&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=1236)
④:该正则表达式能够匹配端口号;

阻止某些指定的URL:

如果我们在输入的文本框中要阻止http://www.baidu.com这个URL,传统的方法是用上面的正则表达式去匹配文本框中的URL,读出所有的URL之后在跟要阻止的URL去比较,但是这种方法有一个弊端,就是我们读出的URL是一直到子URL,而我们在配置文件中可能就写一个母URL,这样要对check出来的URL进行切割,加上网站默认的端口号是:80,我们要去比较端口号等等,我想出了一种新的方法:

从配置文件中读出要阻止的URL,组成一个正则表达式,去匹配文本框中,如果能够匹配到,则阻止掉。

配置文件中应该写:<add key="DomainCheckBlackUrl" value="baidu.com" />

在代码中实现:

现在一个正则表达式由3部分组成:

1:正则表达式的开头,可能由任意的字符组成;
2:正则表达式的中间部分:从配置文件中读出来的部分;
3:正则表达式的结尾部分:可能有一些子目录或者端口号等;

首先,从配置文件中读出URL:string[] serverlist = ConfigurationManager.AppSettings["DomainCheckBlackUrl"].Split(',');(配置文件中以“,”分割)
其次,string start = @"((http|ftp|https)://)([a-zA-Z0-9_-]+\.)*";(正则表达式的开头)
然后,正则表达式的结尾: end = @"(:[0-9]{1,4})?((/[a-zA-Z0-9\&%_\./-~-]*)|(?=[^a-zA-Z0-9\.]))";
组合之后的正则表达式: string check = start + @"((?<=[^a-zA-Z0-9])(" + CutStr + "))" + end;

以上是本人的一些小见解,希望对大家能有所帮助。

相关文章

  • 常用的正则表达式实例整理

    常用的正则表达式实例整理

    这篇文章主要介绍了常用的正则表达式实例整理,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • 正则表达式之捕获组/非捕获组介绍

    正则表达式之捕获组/非捕获组介绍

    使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。
    2011-08-08
  • IP 正则表达式验证

    IP 正则表达式验证

    今天学习了正则表达式,觉得非常实用,而且现在各种编程语言和应用软件如Word、MySQL等等也都内置了正则引擎。
    2008-12-12
  • 详解Java中的scala正则表达式

    详解Java中的scala正则表达式

    Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。这篇文章主要介绍了scala正则表达式的相关知识,需要的朋友可以参考下
    2019-06-06
  • 一文详解密码的正则表达式写法

    一文详解密码的正则表达式写法

    这篇文章主要为大家介绍了一文详解密码的正则表达式写法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • PHP正则表达式的效率 回溯与固化分组

    PHP正则表达式的效率 回溯与固化分组

    上文中,我们聊到了一点关于PHP中(NFA PCRE)正则表达式匹配优先量词,忽略优先量词的匹配原理了。那么上文留下的问题,您的答案是什么呢?
    2011-04-04
  • 正则表达式概述 什么是正则表达式 .

    正则表达式概述 什么是正则表达式 .

    正则表达式就是用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具
    2013-07-07
  • 乱象,印迹 正则学习问答

    乱象,印迹 正则学习问答

    在问答过程中,我收集到学习正则表达式过程中的某些普遍问题,在这里专门花一点篇幅来回答
    2013-09-09
  • js正则表达式验证URL函数代码(方便多个正则对比)

    js正则表达式验证URL函数代码(方便多个正则对比)

    下面是一段相对全面的用例测试,可以考虑使用,当然,如果你的要求很简单,用网上传的各种简单版,cover到自己的用例就好。
    2016-10-10
  • 谈谈我对正则表达式的认识

    谈谈我对正则表达式的认识

    正则表达式(Regular Expression)是一个概念,一种语法、句法的约定。每一种具体的语句(C#,Java,JavaScript)有其对于正则表达式的具体实现,并且会有差别。正则表达式30分钟入门教程讲述的是.net(C#)的正则表达式
    2014-02-02

最新评论