asp.net中匹配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;

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

(0)

相关推荐

  • asp.net中匹配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\&%_\./-~-]*)?"; 关于该正则表达式的说明: ①:该正则表达式匹

  • JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)

    本文实例讲述了JS正则匹配URL网址的方法.分享给大家供大家参考,具体如下: 最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址 直接插入正则表达式: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.? 完整的js方法: function isURL(domain) { var name = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z

  • 在ASP.NET中重写URL的代码

    经常有人请我指导应该如何动态地"重写"URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自己的需求组织你的URL的结构. 为什么URL映射和重写很重要? 下面是开发人员想要对URL有更大的灵活性的最常见的场景: 1) 处理这样的情形:你要更改你的web应用中网页的结构,但你同时也要确保在你移动网页后,那些被人收藏的老URL不会成为死链接.重写URL允许你透明地将请求转交到新的网

  • ASP.NET中的URL过滤实现代码

    下面是类的定义. 复制代码 代码如下: using System; using System.Web; using System.Web.SessionState; namespace QTJZ {     public class Filters : IHttpModule, IRequiresSessionState     {         public void Dispose() { } public void Init(HttpApplication application)   

  • ASP.NET中获取URL重写前的原始地址详解

    通常的使用场景是当我们有某个页面需要用户登录才能访问时,我们会在代码中判断当前访问用户是否登录,如果未登录,则重定向至登录页面,并将当前网址通过Url参数传递给登录页面.如果使用了URL重写,并通过Request.Url.AbsoluteUri获取当前网址,用户登录后打开的就是重写后的地址,这虽然不影响正常使用,但从用户体验及URL统一的角度,我们更希望是重写前的地址. 之前,我们在开发中也被这个问题困扰,只能尽量通过js重定向至登录页面(通过location.href获取当前网址)或者在代码中

  • Asp.net中Request.Url的各个属性对应的意义介绍

    1.简单的环境搭建 在本地IIS上配置了一个网站:主机名为wjnhome.com,端口88,然后建了一个虚拟目录指向同一站点,虚拟目录名称为virtual,配置host为127.0.0.1 wjnhome.com 所以地址就为:http://jb51.net:88/virtual/urldemo.aspx?id=2#top 2.编写简单的代码 复制代码 代码如下: //虚拟目录的路径 Response.Write("<strong>Request.ApplicationPath:&l

  • ASP.NET中Validation验证控件正则表达式特殊符号的说明

    RegularExpressionValidator控件表达式说明: 方括号"[ ]"用与定义可接受的字符.[abc123] 表示控件只能接受 a,b,c,1,2,3 这6个字符: 反集合符号 " ^ "用于定义不可以接受的字符.[^a-h] 表示控件除了 a 到 h 8个字符外,都可以接受: 花括号"{ }"定义必须输入的字符个数.{6}表示只能输入6个字符 : {6,}表示必须输入6个以上,无上限 : {2,6} 表示必须输入2至6个字符:但

  • asp.net下URL网址重写成.html格式、RSS、OPML的知识总结

    一.URL网址重写1.在MSDN中下载一个文件,将ActionlessForm.dll和URLRewriter.dll放到bin目录下.这是MSDN中关于URL重写的一篇文章里的地址.在 ASP.NET 中执行 URL 重写2.将web.config文件中添加下面的代码 <!-- 自定义配置节 --> <configSections>    <section name="RewriterConfig" type="URLRewriter.Conf

  • 正则表达式匹配(URL、电话、手机、邮箱)的实例代码

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本.下面通过实例代码给大家介绍正则表达式匹配(URL.电话.手机.邮箱)的实例代码,一起看看吧! 废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta ch

  • 利用jquery正则表达式在页面验证url网址输入是否正确

    本文介绍的是使用jQuery正则表达式在前台页面验证url网址输入是否正确,代码如下: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"&

随机推荐