第二

来源:互联网 发布:ubuntu安装花屏 编辑:程序博客网 时间:2024/04/27 15:09

Java认证考试:正则表达式在网络编程中的运用

在我们编写WEB程序时,经常会判断一个字符串的有效性,如;一个串是否是数字、是否是有效的Email地址等等。如果不使用正则表达式,那么判断的程序会很长,并且容易出错,如果使用正则表达式,这些判断就是一件很轻松的工作了。本文全面介绍正则表达式的慨念、格式。并以在PHP、ASP中的应用实例增加读者的感性认识。正则表达式的应用很广,需要大家在学习和实践中不断的总结。

正则表达式简介

简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。在网络编程中应用广泛,如PHP脚本语言或是Java(Java教程 Java培训 Java培训机构 Java程序员 )Script、VBScript这样的客户端脚本语言都提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。

正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。

举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确,如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。在后面我们会举例详细介绍。正则表达式形式一般如:/love/,其中位于/“//”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入/“//”定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的/“元字符/”。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。较为常用的元字符包括: /“+,/”*,?以及{}/“,或者/”//s,//S,//d,//w和//W/“等等。为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中利用[]界定匹配于某一个范围的字符而不局限于具体的字符。

除了我们以上的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。较为常用的定位符包括: /”^/“, /”$/“, /”//b/“ 以及 /”//B/“。

如果我们希望在正则表达式中实现类似编程逻辑中的/”或/“运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 /”|/“。例如:

正则表达式中还有一个较为常用的运算符,即否定符 /”[ ^ ]/“。与我们前文所提到的定位符 /”^/“ 不同,否定符 /”[ ^ ]/“规定目标对象中不能存在模式中所规定的字符串。一般来说,当/”^/“出现在 /”[]/“内时就被视做否定运算符;而当/”^/“位于/”[] /“之外,或没有/”[]/“时,则应当被视做定位符。

最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符/”///“。例如:/Th//*/,该正则表达式将会与目

标对象中的/”Th*/“而非/”The/“等相匹配。

正则表达式的语法规则和标记

现在我们正式进入则表达式的学习,我会根据实例结合讲解正则表达式的用法,看完后你就会觉得写UBB代码如此简单了,只要你一步一步的跟着我学 看完本文章后你就成为UBB高手了。激动人心的就是你能写出自已的UBB标签来了,再也不用到别人那里去拷贝现成的代码和模板了。 还好VBScritp5.0 给我们提供了/”正则表达式/“对象,只要你的服务器安装了IE5.x,就可以运行了。

字符描述:

^符号匹配字符串的开头。例如:

^abc 与/”abc xyz/“匹配,而不与/”xyz abc/“匹配

$符号匹配字符串的结尾。例如:

abc$ 与/”xyz abc/“匹配,而不与/”abc xyz/“匹配。

注意:如果同时使用^符号和$符号,将进行精确匹配。例如:

^abc$ 只与/”abc/“匹配

*符号匹配0个或多个前面的字符。例如:

ab* 可以匹配/”ab/“、/”abb/“、/”abbb/“等

+符号匹配至少一个前面的字符。例如:

ab+ 可以匹配/”abb/“、/”abbb/“等,但不匹配/”ab/“。

?符号匹配0个或1个前面的字符。例如:

ab?c? 可以且只能匹配/”abc/“、/”abbc/“、/”abcc/“和/”abbcc/“

。符号匹配除换行符以外的任何字符。例如:

(。)+ 匹配除换行符以外的所有字符串

x|y匹配/”x/“或/”y/“。例如:

abc|xyz 可匹配 /”abc/“或 /”xyz/“,而/”ab(c|x)yz/“匹配 /”abcyz/“和/”abxyz/“

{n}匹配恰好n次(n为非负整数)前面的字符。例如:

a{2} 可以匹配/”aa/“,但不匹配/”a/“

{n,}匹配至少n次(n为非负整数)前面的字符。例如:

a{3,} 匹配/”aaa/“、/”aaaa/“等,但不匹配/”a/“和/”aa/“。

注意:a{1,}等价于a+

a{0,}等价于a*

{m,n}匹配至少m个,至多n个前面的字符。例如:

a{1,3} 只匹配/”a/“、/”aa/“和/”aaa/“。

 

原创粉丝点击