首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

正则表达式的应用场合非常广泛,在很多编程语言中都有所涉及,如JavaScript、Jscript、Perl、PHP和Python等。在JavaScript脚本中,利用正则表达式,开发者可以很容易地实现文本字符串的检测、替换等功能,如网页中常见的电子邮件地址、日期字符串等的检测一般都使用正则表达式来实现。但对于初学者来说,正则表达式复杂的表达方式往往会令人望而生畏。本章将由易到难、由浅到深,针对正则表达式在JavaScript脚本中的应用层层进行剖析,力求让读者熟练掌握正则表达式的使用方法。

14.1  正则表达式简介

正则表达式(Regular Expression)本质上就是字符串,它定义了一个用来搜索匹配字符串的模式。换句话说,就是符合某种规则的表达式,可以将其理解为一种对文字进行模糊匹配的语言。在JavaScript中,其定义的模式为: /Expression/,以斜杠作为表达式的起始和终止标志。

其实这种模糊匹配的方法,相信读者也并不陌生。比如,很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是“*”和“?”。回想一下,当要查找所有的Word文档时,将会在搜索框内输入“*.doc”来进行查找。这样系统就会把“*”理解为任意的字符串,然后根据此通配符找出系统中所有的Word文档。

在搜索文件的过程中,“?”字符匹配文件名中的单个字符。例如,使用“file?.dat'”模式搜索就可以找到“file1.dat”、“file2.dat”等类似格式的文件。如果使用“ *” 字符代替“?” 字符,将扩大搜索的范围。例如,使用“file*.dat”模式搜索就可以匹配“file.dat”、“file1.dat”、“file12.dat”等类似格式的文件。“?” 和“ *” 通配符的能力有限,与正则表达式也有所区别,但可以让读者对“正则表达式能做什么”有一个基本的概念。

其实,正则表达式也是用来进行文本匹配的工具,只不过它比通配符更能精确地描述匹配的需求。例如电话号码的格式一般为“区号+号码”,有两种形式:

— 三位区号,八位号码,如020-85469533。

— 四位区号,七位号码,如0731-4534870。

正则表达式对电话号码的匹配可以表示如下:

/(((\d{3}\)|\d{3}-)\d{8})|(((\d{4}\)|\d{4}-)\d{7})$/

通过该表达式,可以轻松而精确地匹配电话号码,从而达到检测、替换等目的。但正则表达式的形式非常复杂,初学者很难看懂。

JavaScript脚本语言中引入正则表达式主要完成如下功能。

— 验证字符串格式:例如,可以对一个输入字符串进行测试,检测在该字符串中是否存在一个符合指定特征的子字符串。比如网页中常用的电子邮件地址、身份证号、电话号码等的验证,也称为数据有效性验证。

— 查找字符串:根据模式匹配从字符串中查找某个子字符串,可以用来完成在文本或输入字段中查找特定文字。

— 替换文本:可以在文档中使用一个正则表达式来标识特定文字,得到其所在的确切位置后,然后可以将其全部删除,或替换为其他文字,也称为定位替换。使用正则表达式替换文本比其他的替换方式功能更强、效率更高。

例如,如果需要搜索整个Web站点来删除某些过时的内容或替换某些HTML元素标记,就可以使用正则表达式对每个文件进行测试,搜索在该文件中是否存在所要查找的内容或 HTML 元素标记。使用该方法可以将受影响的文件范围缩小到包含目标内容的所有文档,然后使用正则表达式来删除指定的内容或替换指定的标记。

正则表达式的应用场合介绍如下。

— 表单验证:验证表单中某些域是否符合某种规则,例如出生年月框必须输入合法的时间日期、联系电话输入框中输入的内容必须是数字等。

— 处理DOM模型:在前面的一些章节中,已经讲解了DOM文档对象模型,正则表达式也可以操作DOM对象或者与DOM对象交互。例如通过正则表达式定位DOM中的一个对象或一组对象。典型的实例就是定位id属性中含有某个特殊字符的div对象。

— 纯编程逻辑:直接用于编程的逻辑之中,作为程序的一部分,与其他对象交互,从而达到预期的效果。

在编写程序时,特别是在网页Web开发的时候,经常会判断一个字符串的有效性,如:一个字符串是否为数字、是否为合法的E-mail地址等。如果不使用正则表达式,则判断其格式的程序代码将会很复杂,而且容易出错。若使用正则表达式,格式判断将变成一件很轻松的工作。对“正则表达式是什么?”、“能做什么?”等问题有初步的认识之后,下面讲述JavaScript脚本中如何使用正则表达式。

注意:多种语言都使用到正则表达式,其功能大同小异。但在各种语言中正则表达式具体的定义和使用方法都不一样,具体请参考各种语言的正则表达式相关内容。另外,JavaScript 1.2版本后才支持正则表达式。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论