近日在开发一套ASP系统,其中有一个功能就是在顶部导航中,自动判断是否为当前页,(也就是给链接加上个class=”current”,应该了解DIV+CSS的都知道吧),如果是的话标签就显示为亮起。当然,我用ASP来实现的这些功能。对于正则表达式的学习,建议去看一下《正则表达式30分钟入门教程》
为了尽可能少地修改每个页面,在导航的页面中每个<a>标签中都插入了一个ASP的数组,并对每个链接进行了编号,然后每次打开页面时,对URL进行判断,然后在符合条件的数组元素中赋予”class=current”的值,这样就达到目的了。
说起来简单,但是URL判断的时候还是要动点脑筋的,最近URL重写用得比较多,因此对正则表达式略有了解,于是就想到了在这里用正则表达式来匹配出我想要的部分。
使用Request.ServerVariables(“URL”)所返回的URL形式为:/dir/file.ext
我将每个版块的文件放在了不同的文件夹中,因此,我只要对/dir/进行判断就能分别显示不同的标签了。
下面给出我写的代码,主要就是想说一下ASP中正则表达式的用法。
Dim Reg, Str Set Reg = New RegExp '建立正则表达式对象 Reg.Pattern = "/((.*)+)/" '设置正则表达式 Reg.Global = True '是否全局匹配,也就是匹配一次还是匹配多次 Reg.IgnoreCase = True '忽略大小写 Set Str = Reg.Execute(rURL) '进行匹配查找 If Str.Count > 0 Then 'Str.Count 表示找到的匹配次数 URL = Str(0) '数组中就是找到的匹配文本了 End If
下面这段是我在网上找到的,对于我在开发过程中有很大的帮助:
集合对象(Matches)的使用:
Set Matches=regEx.Execute(str) ‘对str进行搜索,返回匹配到的Matches集合
属性:
Matches.Count ‘匹配到的个数
Matches.Item(i) ‘第i个匹配到的字符串
注意:Matches.Item(i)=Matches(i).Value=Matches(i)引用自:http://hi.baidu.com/wfyeshi/blog/item/d5dce410334536ffc3ce79d7.html
这些对匹配后的结果处理上有帮助。
用这段代码,可以将/dir/file.ext中的/dir/给匹配出来,然后只要在后面用一个数组来进行匹配就能实现我的当前页面标签亮起的功能了,这个是我自己想的方法呵呵,不知道网上是不是有更好的方法呢。当然上面举的那段代码仅仅是最简单的实现匹配而已,后面的结果处理就自己发挥的了,还要考虑到多层目录以及根目录的情况,这里就不给出实例说明了。
本文地址:http://www.steveluo.name/asp-regular-expression/
您可能还对这些文章感兴趣:
No Comments
Make A CommentNo comments yet.
Comments RSS Feed TrackBack URL