仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 516|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页设计正则表达式疾速进门教程

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,教程|疾速进门|进门教程|正则  起首,让我们来懂得一下事实甚么是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[0]...[n]获得。假如要婚配括号字符(和),可以使用"("或")"。

  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?"。

  [xyz]:一个字符集。与括号中字符的个中之一婚配。比方,"[abc]"婚配"plain"中的"a"。

  [^xyz]:一个否认的字符集。婚配不在此括号中的任何字符。比方,"[^abc]"能够婚配"plain"中的"p".

  [a-z]:暗示某个局限内的字符。与指定区间内的任何字符婚配。比方,"[a-z]"婚配"a"与"z"之间的任何一个小写字母字符。

  [^m-z]:否认的字符区间。与不在指定区间内的字符婚配。比方,"[m-z]"与不在"m"到"z"之间的任何字符婚配。

  :与单词的界限婚配,即单词与空格之间的地位。比方,"er"与"never"中的"er"婚配,可是不婚配"verb"中的"er"。

  B:与非单词界限婚配。"ea*rB"与"neverearly"中的"ear"婚配。

  d:与一个数字字符婚配。等价于[0-9]。

  D:与非数字的字符婚配。等价于[^0-9]。

  f:与分页符婚配。

  
:与换行符字符婚配。

  :与回车字符婚配。

  s:与任何白字符婚配,包含空格、制表符、分页符等。等价于"[f
        v]"。

  S:与任何非空缺的字符婚配。等价于"[^f
        v]"。

          :与制表符婚配。

  v:与垂直制表符婚配。

  w:与任何单词字符婚配,包含下划线。等价于"[A-Za-z0-9_]"。

  W:与任何非单词字符婚配。等价于"[^A-Za-z0-9_]"。

  
um:婚配num个,个中num为一个正整数。援用回到记着的婚配。比方,"(.)1"婚配两个一连的不异的字符。

  
:婚配n,个中n是一个八进制换码值。八进制换码值必需是1,2或3个数字长。

  比方,"11"和"11"都与一个制表符婚配。"011"等价于"01"与"1"。八进制换码值不得凌驾256。不然,只要前两个字符被视为表达式的一部分。同意在正则表达式中利用ASCII码。

  xn:婚配n,个中n是一个十六进制的换码值。十六进制换码值必需刚好为两个数字长。比方,"x41"婚配"A"。"x041"等价于"x04"和"1"。同意在正则表达式中利用ASCII码。

  好了,经常使用的办法和属性就是这些了,下面的语法先容的已很具体了,我们就没有需要在罗嗦了,接上去我们来看看在详细的例子内里怎样利用这些办法和属性来校验数据的正当性,我们仍是举个例子吧,好比,我们想要对用户输出的电子邮件举行校验,那末,甚么样的数据才算是一个正当的电子邮件呢?我能够如许输出:uestc95@263.net,固然我也会如许输出:xxx@yyy.com.cn,可是如许的输出就长短法的:xxx@@com.cn大概@xxx.com.cn,等等,以是我们得出一个正当的电子邮件地点最少应该满意以下几个前提:

  1.必需包括一个而且只要一个标记“@”

  2.必需包括最少一个最多三个标记“.”

  3.第一个字符不得是“@”大概“.”

  4.不同意呈现“@.”大概.@

  5.开头不得是字符“@”大概“.”

  以是依据以上的准绳和下面表中的语法,我们很简单的就能够失掉必要的模板以下:"(w)+[@]{1}(w)+[.]{1,3}(w)+"
<P>  接上去我们细心剖析一下这个模板,起首“w”暗示邮件的入手下手字符只能是包括下划线的单词字符,如许,满意了第三个前提;“[@]{1}”暗示在电子邮件中应该婚配而且只能婚配一次字符“@”,满意了前提一;一样的“[.]{1,3}”暗示在电子邮件中最少婚配1个最多婚配3个字符“.”,满意了第二个前提;模板最初的“(w)+”暗示开头的字符只能是包括下划线在内的单词字符,满意了前提五;模板两头的“(w)+”满意了前提四。

  然后,我们就间接挪用方才的谁人函数CheckExp("(w)+[@]{1}(w)+[.]{1}(w)+",待校验的字符串)就行了,假如前往True就暗示数据是正当的,不然就是不准确的,怎样,复杂吧。我们还能够写出来校验身份证号码的模板:"([0-9]){15}";校验URL的模板:"^http://{1}((w)+[.]){1,3}"等等;我们能够看到,这些模板为我们供应了很好的可厚利用的模块,使用本人大概他人供应的各类模板,我们就能够便利快速的举行数据的正当性校验了,信任你必定会写出十分通用的模板的。

  如许,我们只需定制分歧的模板,就能够完成对分歧数据的正当性校验了。以是,正则表达式工具中最主要的属性就是:“Pattern”属性,只需真正把握了这个属性,才能够自在的使用正则表达式工具来为我们的数据校验举行服务。

  上面我们就先容这三个工具和汇合。

  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汇合。

  在JavaScript1.2版今后,JavaScript也撑持正则表达式。

  1、replace

  replace在一个字符串中经由过程正则表达式查找交换响应的内容。replace其实不改动本来的字符串,只是从头天生了一个新的字符串。假如必要实行全局查找或疏忽巨细写,那末在正则表达式的最初增加g和i。

  例:

<SCRIPT>
 re=/apples/gi;
 str="Applesareround,andapplesarejuicy.";
 newstr=str.replace(re,"oranges");
 document.write(newstr)
</SCRIPT>

  了局是:"orangesareround,andorangesarejuicy."

  例:

<SCRIPT>
str="TwasthenightbeforeXmas...";
newstr=str.replace(/xmas/i,"Christmas");
document.write(newstr)
</SCRIPT>

  了局是:"TwasthenightbeforeChristmas..."

  例:

<SCRIPT>
re=/(w+)s(w+)/;str="JohnSmith";
newstr=str.replace(re,"$2,$1");
document.write(newstr)
</SCRIPT>

  了局是:"Smith,John".
<P>  2、search

  search经由过程正则表达式查找响应的字符串,只是判别有没有婚配的字符串。假如查找乐成,search前往婚配串的地位,不然前往-1。
         search(regexp)
<SCRIPT>
functiontestinput(re,str){
 if(str.search(re)!=-1)
  midstring="contains";
 else
  midstring="doesnotcontain";
  document.write(str+midstring+re.source);
}
testinput(/^[1-9]/i,"123")
</SCRIPT>

  3、match

  match办法实行全局查找,查找了局寄存在一个数组里。

  例一:

<SCRIPT>
str="Formoreinformation,seeChapter3.4.5.1";
re=/(chapterd+(.d)*)/i;
found=str.match(re);
document.write(found);
</SCRIPT>

  显现了局:Chapter3.4.5.1,Chapter3.4.5.1,.1

  例二:

<SCRIPT>
str="abcDdcba";
newArray=str.match(/d/gi);
document.write(newArray);
</SCRIPT>

  显现了局D,d.

  1、判别数字的准确性

<%@Language=VBScript%>
<scriptlanguage="javascript"runat="server">
functionisNumeric(strNumber){
return(strNumber.search(/^(-|+)?d+(.d+)?$/)!=-1);
}
functionisUnsignedNumeric(strNumber){
return(strNumber.search(/^d+(.d+)?$/)!=-1);
}
functionisInteger(strInteger){
return(strInteger.search(/^(-|+)?d+$/)!=-1);
}
functionisUnsignedInteger(strInteger){
return(strInteger.search(/^d+$/)!=-1);
}
</script>
<HTML>
<BODY>
<b>判别数字的准确性</b>
<%
DimstrTemp
strTemp=CStr(Request.Form("inputstring"))
IfstrTemp=""ThenstrTemp="0"
%>
<TABLEBORDER="1"CELLPADDING="4"CELLSPACING="2">
<TR>
<TDALIGN="right"><B>原始字符串</B></TD>
<TD><%=strTemp%></TD>
</TR>
<TR>
<TDALIGN="right"><B>数字</B></TD>
<TD><%=isNumeric(strTemp)%></TD>
</TR>
<TR>
<TDALIGN="right"><B>非正数字</B></TD>
<TD><%=isUnsignedNumeric(strTemp)%></TD>
</TR>
<TR>
<TDALIGN="right"><B>整数</B></TD>
<TD><%=isInteger(strTemp)%></TD>
</TR>
<TR>
<TDALIGN="right"><B>非负整数()</B></TD>
<TD><%=isUnsignedInteger(strTemp)%></TD>
</TR>
</TABLE>
<FORMACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>"METHOD="post">
请输出一个数字:<BR>
<INPUTTYPE="text"NAME="inputstring"SIZE="50"></INPUT><BR>
<INPUTTYPE="submit"Value="提交"></INPUT><BR>
</FORM>
</BODY>
</HTML>

  2、判别Email地点的准确性

<%
Functionisemail(strng)
 isemail=false
 DimregEx,Match
 SetregEx=NewRegExp
 regEx.Pattern="^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$"
 regEx.IgnoreCase=True
 SetMatch=regEx.Execute(strng)
 ifmatch.countthenisemail=true
EndFunction
%>

对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-18 23:14:50 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
山那边是海 该用户已被删除
板凳
发表于 2015-1-27 11:59:55 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-5 10:24:36 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
莫相离 该用户已被删除
5#
发表于 2015-2-11 09:30:10 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
第二个灵魂 该用户已被删除
6#
发表于 2015-3-2 09:40:37 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
再现理想 该用户已被删除
7#
发表于 2015-3-11 03:40:16 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
乐观 该用户已被删除
8#
发表于 2015-3-17 20:10:37 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
若相依 该用户已被删除
9#
发表于 2015-3-25 00:00:55 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 13:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表