|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。正则 1、正则表达式概述
假如本来没有利用过正则表达式,那末大概对这个术语和观点会不太熟习。不外,它们并非您设想的那末别致。
请回忆一下在硬盘上是怎样查找文件的。您一定会利用?和*字符来匡助查找您正寻觅的文件。?字符婚配文件名中的单个字符,而*则婚配一个或多个字符。一个如'data?.dat'的形式能够找到下述文件:data1.dat、data2.dat等等。假如利用*字符取代?字符,则将扩展找到的文件数目。'data*.dat'能够婚配下述一切文件名:data.dat、data1.dat、data12.dat等等,只管这类搜刮文件的办法一定很有效,但也非常无限。?和*通配符的无限才能可使你对正则表达式能做甚么有一个观点,不外正则表达式的功效更壮大,也更天真。
在我们编写ASP程序时,常常会判别一个字符串的无效性,如;一个串是不是是数字、是不是是无效的Email地点等等。假如不利用正则表达式,那末判别的程序会很长,而且简单堕落,假如利用正则表达式,这些判别就是一件很轻松的事情了。前面我们将先容怎样判别数字和Email地点的无效性。
在典范的搜刮和交换操纵中,必需供应要查找切实其实切笔墨。这类手艺关于静态文本中的复杂搜刮和交换义务大概充足了,可是因为它缺少天真性,因而在搜刮静态文本时就有坚苦了,乃至是不成能的。
利用正则表达式,能完成些甚么事变呢?
测试字符串的某个形式。比方,能够对一个输出字符串举行测试,看在该字符串是不是存在一个德律风号码形式或一个信誉卡号码形式。这称为数占有效性考证。
交换文本。能够在文档中利用一个正则表达式来标识特定笔墨,然后能够全体将其删除,大概交换为其余笔墨。
依据形式婚配从字符串中提取一个子字符串。能够用来在文本或输出字段中查找特定笔墨。
比方,假如必要搜刮全部web站点来删除某些过期的质料并交换某些HTML格局化标志,则可使用正则表达式对每一个文件举行测试,看在该文件中是不是存在所要查找的质料或HTML格局化标志。用这个办法,就能够将受影响的文件局限减少到包括要删除或变动的质料的那些文件。然后可使用正则表达式来删除过期的质料,最初,能够再次利用正则表达
式来查找并交换那些必要交换的标志。
那末,正则表达式语法的语法是怎样呢?
一个正则表达式就是由一般字符(比方字符a到z)和特别字符(称为元字符)构成的笔墨形式。该形式形貌在查找文
字主体时待婚配的一个或多个字符串。正则表达式作为一个模板,将某个字符形式与所搜刮的字符串举行婚配。
这里有一些大概会碰到的正则表达式示例:
/^[ ]*$/"^[ ]*$"婚配一个空缺行。
/d{2}-d{5}/"d{2}-d{5}"考证一个ID号码是不是由一个2位数字,一个连字符和一个5位数字构成。
/<(.*)>.*</1>/"<(.*)>.*</1>"婚配一个HTML标志。
2、正则表达式在VBScript中的使用
VBScript利用RegExp工具、Matches汇合和Match工具供应正则表达式撑持功效。我们仍是先看一个例子。
<%
FunctionRegExpTest(patrn,strng)
DimregEx,Match,Matches '创建变量。
SetregEx=NewRegExp '创建正则表达式。
regEx.Pattern=patrn '设置形式。
regEx.IgnoreCase=True '设置是不是辨别字符巨细写。
regEx.Global=True '设置全局可用性。
SetMatches=regEx.Execute(strng) '实行搜刮。
ForEachMatchinMatches '遍历婚配汇合。
RetStr=RetStr&"Matchfoundatposition"
RetStr=RetStr&Match.FirstIndex&".MatchValueis'"
RetStr=RetStr&Match.Value&"'."&"<BR>"
Next
RegExpTest=RetStr
EndFunction
response.writeRegExpTest("[ij]s.","IS1Js2IS3is4")
%>
在这个例子中,我们查找字符串中有没有is大概js这两个词,疏忽巨细写。运转的了局以下:
Matchfoundatposition0.MatchValueis'IS1'.
Matchfoundatposition4.MatchValueis'Js2'.
Matchfoundatposition8.MatchValueis'IS3'.
Matchfoundatposition12.MatchValueis'is4'.
上面我们就先容这三个工具和汇合。
1、RegExp工具是最主要的一个工具,它有几个属性,个中:
○Global属性,设置或前往一个Boolean值,该值指明在全部搜刮字符串时形式是全体婚配仍是只婚配第一个。假如搜刮使用于全部字符串,Global属性的值为True,不然其值为False。默许的设置为False。
○IgnoreCase属性,设置或前往一个Boolean值,指明形式搜刮是不是辨别巨细写。假如搜刮是辨别巨细写的,则IgnoreCase属性为False;不然为True。缺省值为False。
○Pattern属性,设置或前往被搜刮的正则表达式形式。必选项。老是一个RegExp工具变量。
2、Match工具
婚配搜刮的了局是寄存在Match工具中,供应了对正则表达式婚配的只读属性的会见。Match工具只能经由过程RegExp工具的Execute办法来创立,该办法实践上前往了Match工具的汇合。一切的Match工具属性都是只读的。在实行正则表达式时,大概发生零个或多个Match工具。每一个Match工具供应了被正则表达式搜刮找到的字符串的会见、字符串的长度,和找到婚配的索引地位等。
○FirstIndex属性,前往在搜刮字符串中婚配的地位。FirstIndex属性利用从零起算的偏移量,该偏移量是相对
搜刮字符串的肇端地位而言的。换言之,字符串中的第一个字符被标识为字符0
○Length属性,前往在字符串搜刮中找到的婚配的长度。
○Value属性,前往在一个搜刮字符串中找到的婚配的值或文本。
3、Matches汇合
正则表达式Match工具的汇合。Matches汇合中包括多少自力的Match工具,只能利用RegExp工具的Execute办法来创立之。与自力的Match工具属性不异,Matches`汇合的一个属性是只读的。在实行正则表达式时,大概发生零个或多个Match工具。每一个Match工具都供应了与正则表达式婚配的字符串的会见出口、字符串的长度,和标识婚配地位的索引。
进修了这三个工具和汇合,怎样使用于字符串的判别和交换呢?regExp工具的三个办法恰好办理了这个成绩,它们是Replace办法、Test办法和Execute办法。
1、Replace办法
交换在正则表达式查找中找到的文本。我们仍是先看个例子:上面的例子申明了Replace办法的用法。
<%
FunctionReplaceTest(patrn,replStr)
DimregEx,str1'创建变量。
str1="Thequickbrownfoxjumpedoverthelazydog."
SetregEx=NewRegExp'创建正则表达式。
regEx.Pattern=patrn'设置形式。
regEx.IgnoreCase=True'设置是不是辨别巨细写。
ReplaceTest=regEx.Replace(str1,replStr)'作交换。
EndFunction
Response.writeReplaceTest("fox","cat")&"<BR>"'将'fox'交换为'cat'。
Response.writeReplaceTest("(S+)(s+)(S+)","$3$2$1")'互换词对.
%>
2、Test办法
对指定的字符串实行一个正则表达式搜刮,并前往一个Boolean值唆使是不是找到婚配的形式。正则表达式搜刮的实践形式是经由过程RegExp工具的Pattern属性来设置的。RegExp.Global属性对Test办法没有影响。
假如找到了婚配的形式,Test办法前往True;不然前往False。上面的代码申明了Test办法的用法。
<%
FunctionRegExpTest(patrn,strng)
DimregEx,retVal'创建变量。
SetregEx=NewRegExp'创建正则表达式。
regEx.Pattern=patrn'设置形式。
regEx.IgnoreCase=False'设置是不是辨别巨细写。
retVal=regEx.Test(strng)'实行搜刮测试。
IfretValThen
RegExpTest="找到一个或多个婚配。"
Else
RegExpTest="未找到婚配。"
EndIf
EndFunction
Response.writeRegExpTest("is.","IS1is2IS3is4")
%>
3、Execute办法
对指定的字符串实行正则表达式搜刮。正则表达式搜刮的计划形式是经由过程RegExp工具的Pattern来设置的。
Execute办法前往一个Matches汇合,个中包括了在string中找到的每个婚配的Match工具。假如未找到婚配,Execute将前往空的Matches汇合。
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|