ASP网页编程之怎样利用正则表达式来校验数据的正当性...
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。数据|正则我们在制造网站的时分,特别是各类电子商务网站,起首城市让用户填写一些表格来猎取注册用户的各类信息,由于用户有大概输出形形色色的信息,而有些不切合请求的数据会给我们的后端ASP处置程序带来不用要的贫苦,乃至招致网站呈现一些平安成绩。因而我们在将这些信息保留到网站的数据库之前,要对这些用户所输出的信息举行数据的正当性校验,以便前面的程序能够平安顺遂的实行。以是我们一样平常会在后端编写一个ASP的校验程序来剖析用户输出的数据是不是是正当的。也许有人会问了,利用运转在客户真个Javascript不是能够更好更快的来校验用户的数据吗?切实其实,如许在年夜多的情形下是能够的,为何是年夜多情形下呢?由于你编写的Javascript纷歧定能够完整一般的同时运转在IE和Netscape下面,由于微软的Jscript其实不全和Javascript不异,再加上另有一些扫瞄器纷歧定和微软和Netscape兼容的很好,以是很有大概在客户真个Javascript不会准确的校验用户输出的各类数据,而ASP程序是运转在服务器真个,只是和你的服务器的情况有关,不管客户端是甚么扫瞄器,关于你的ASP程序来讲都是没有分离的,以是选择利用后真个ASP程序来举行数据正当性的校验是一个好的选择。
在利用ASP来举行后真个数据正当性校验的时分,有些工资满意分歧情况上面的数据校验,编写了良多的函数来完成,好比,我们想要校验用户输出的URL地点是不是正当,是能够本人编写一段代码来逐一逐一字符的剖析用户输出的信息,要剖析的信息量小了,那还对照好办,如果剖析的前提一成不变,那可就惨了,不仅要编写很长很烦琐的代码,并且运转的效力极为低下,有无好的办理举措呢?有,那就是vbscritp5.0供应的“正则表达式”工具,只需你的服务器安装了IE5.x,就会带VBscript5.0。实在,“正则表达式”底本是Unix上面的专利,特别是在Perl言语中利用的最为普遍,恰是因为“正则表达式”的壮大功效,才使得微软渐渐将正则表达式工具移植到了视窗体系下面,使用
“正则表达式”工具,我们就能够十分便利的对各类数据举行正当性的校验了。
起首,让我们来懂得一下事实甚么是VBscript的“正则表达式”工具,我们先来看一段程序:
FunctionCheckExp(patrn,strng)
DimregEx,Match 创建变量。
SetregEx=NewRegExp创建正则表达式。
regEx.Pattern=patrn设置形式。
regEx.IgnoreCase=true设置是不是辨别字符巨细写。
regEx.Global=True设置全局可用性。
Matches=regEx.test(strng) 实行搜刮。
CheckExp=matches
EndFunction
在这段程序程序中,我们看到可使用“NewRegExp”来失掉一个正则表达式工具,然后对这个工具举行正则婚配模板的赋值,也就是告知正则表达式工具,你想要婚配一个甚么模样的模板,然后利用办法Test来检测待处置的数据事实和我们给出的模版是不是相婚配,假如不婚配,那就标明待处置的数据不是正当的数据,从而也就完成了数据正当性的校验,我们能够看出,利用一个计划公道的婚配模板,我们能够轻松的校验一批格局相似的数据信息。
固然,VBscript5.0中的“正则表达式”工具另有良多的其他的办法和属性,好比办法Replace(),使用他我们就能够很快的完成如今网上很时兴的UBB作风的论坛和BBS,这不在我们会商局限以内,今后再加以叙述,我们如今就看看在数据校验方面正则表达式工具经常使用的办法和属性:
经常使用办法:Execute办法
形貌:对指定的字符串实行正则表达式搜刮。
语法:object.Execute(string) Execute办法的语法包含以下几个部分:
object:必须的。老是一个RegExp工具的称号。
string:必须的。要在其上实行正则表达式的文本字符串。
申明:正则表达式搜刮的计划形式是经由过程RegExp工具的Pattern来设置的。Execute办法前往一个
Matches汇合,个中包括了在string中找到的每个婚配的Match工具。假如未找到婚配,Execute将前往空的Matches汇合。
Test办法
形貌:对指定的字符串实行一个正则表达式搜刮,并前往一个Boolean值唆使是不是找到婚配的形式。
语法:object.Test(string)
Test办法的语法包含以下几个部分:
object:必须的。老是一个RegExp工具的称号。
string:必须的。要实行正则表达式搜刮的文本字符串。
申明:正则表达式搜刮的实践形式是经由过程RegExp工具的Pattern属性来设置的。RegExp.Global属性对Test办法没有影响。假如找到了婚配的形式,Test办法前往True;不然前往False。
经常使用属性:Global属性
形貌:设置或前往一个Boolean值,该值指明在全部搜刮字符串时形式是全体婚配仍是只婚配第一个。
语法:object.Global[=True|False]
object参数老是RegExp工具。假如搜刮使用于全部字符串,Global属性的值为True,不然其值为False。默许的设置为True。
IgnoreCase属性
形貌:设置或前往一个Boolean值,指明形式搜刮是不是辨别巨细写。
语法:object.IgnoreCase[=True|False]
object参数老是一个RegExp工具。假如搜刮是辨别巨细写的,则IgnoreCase属性为False;不然为True。缺省值为True。
Pattern属性
形貌:设置或前往被搜刮的正则表达式形式。这是一个最主要的属性,我们次要是设置这个属性来完成数据校验的。
语法:object.Pattern[="searchstring"]
Pattern属性的语法包括以下几个部分:
object:必须的。老是一个RegExp工具变量。
searchstring:可选的。被搜刮的正则字符串表达式。它大概包括设置部分表格中的各类正则表达式字符。
设置:在誊写正则表达式的形式时利用了特别的字符和序列。下表形貌了可使用的字符和序列,并给出了实例。
字符形貌::将下一个字符标志为特别字符或字面值。比方"n"与字符"n"婚配。"
"与换行符婚配。序列""与""婚配,"("与"("婚配。
^:婚配输出的入手下手地位。
$:婚配输出的开头。
*:婚配前一个字符零次或几回。比方,"zo*"能够婚配"z"、"zoo"。
+:婚配前一个字符一次或屡次。比方,"zo+"能够婚配"zoo",但不婚配"z"。
?:婚配前一个字符零次或一次。比方,"a?ve?"能够婚配"never"中的"ve"。
.:婚配换行符之外的任何字符。
(pattern)与形式婚配并记着婚配。婚配的子字符串能够从作为了局的Matches汇合中利用Item...获得。假如要婚配括号字符(和),可以使用"("或")"。
x|y:婚配x或y。比方"z|food"可婚配"z"或"food"。"(z|f)ood"婚配"zoo"或"food"。
{n}:n为非负的整数。婚配刚好n次。比方,"o{2}"不克不及与"Bob中的"o"婚配,可是能够与"foooood"中的前两个o婚配。
{n,}:n为非负的整数。婚配最少n次。比方,"o{2,}"不婚配"Bob"中的"o",可是婚配"foooood"中一切的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。
{n,m}:m和n为非负的整数。婚配最少n次,最多m次。比方,"o{1,3}"婚配"fooooood"中前三个o。"o{0,1}"等价于"o?"。
:一个字符集。与括号中字符的个中之一婚配。比方,""婚配"plain"中的"a"。
[^xyz]:一个否认的字符集。婚配不在此括号中的任何字符。比方,"[^abc]"能够婚配"plain"中的"p".
:暗示某个局限内的字符。与指定区间内的任何字符婚配。比方,"</p>缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页:
[1]