《使用正则表达式匹配字符串数据》由会员分享,可在线阅读,更多相关《使用正则表达式匹配字符串数据(16页珍藏版)》请在金锄头文库上搜索。
1、Flex 4.0 RIA开发详解(第2版)第20章 使用正则则表达式匹配字符串数据在应用程序中经常需要查找符合某种复杂规则的字符串 。例如,电话号码字符串“0577-23234312”前四位为区号, 后八位为电话号,中间以“-”相连。事实上,不同地区的电 话号长度也不尽相同。使用正则表达式可高效地匹配查找字 符串数据。Flex 4.0 RIA开发详解(第2版)20.1 正则则表达式概述正则表达式是用于描述复杂规则的工具。在许多应用程 序中用户其实已经接触到了正则表达式 使用正则表达式的难点在于如何定义正确的正则表达式 。不正确的正则表达式不能准确地描述字符串规则。正则表 达式错误有两种表现形式
2、:规则完全不合逻辑、规则不能满 足全部要求。前者可能是开发者逻辑上的错误引起的。 正则表达式的定义有较多的语法,并且较长的正则表达 式往往可读性不高。因此,对于初学正则表达式的读者会有 一定的困难。Flex 4.0 RIA开发详解(第2版)20.2 正则则表达式的语语法正则表达式是一种标准,并非Flex特有。正则表达式的 语法较多,由于本书篇幅有限,将只介绍入门级别的语法知 识。但对于在Flex应用程序中使用正则表达式已经够用。Flex 4.0 RIA开发详解(第2版)20.2.1 元字符元字符是正则表达式中最基本的元素,用于匹配最基本 字符。Flex 4.0 RIA开发详解(第2版)20.2
3、.2 转义转义 字符若用户要匹配元字符或其他有特殊意义的字符,如“.” 、“”、“(”等,就需要使用转义字符。正则表达式中的转义 字符在字符前加反斜杠“”,如“.”、“”、“(”等。Flex 4.0 RIA开发详解(第2版)20.2.3 限定符限定符用于确定重复方式。例如,“*”表示0个或多个, “2”表示2个。Flex 4.0 RIA开发详解(第2版)20.2.4 字符集合字符集合用于匹配集合内的字符,使用“”操作符表示 。Flex 4.0 RIA开发详解(第2版)20.2.5 反义义有时用户需要查找不属于某个能简单定义的字符,如查 找除数字外的其他任意字符。此时需要使用反义。Flex 4.
4、0 RIA开发详解(第2版)20.2.6 多规则规则多规则是指正则表达式可有多种规则,规则间以“|”符 分隔。例如,“d+|0-9a-z+”表达匹配多个数字组成的字符 串或由数字、小写字母混合的字符串。 以下正则表达式匹配两种以连字号“-”分隔的电话号码 。一种是前3位区号,8位本地号,如011-43432423。另一种 是前4位区号,7位本地号,如0343-4324246。Flex 4.0 RIA开发详解(第2版)20.2.7 子表达式前面章节中介绍如何重复单个字符,若要重复多个字符 就需要使用子表达式。子表达式用括号将多个字符联合起来 ,如“(dwd)”、“(da-z)”等。子表达式是正则
5、表达式中最 常使用的语法之一。Flex 4.0 RIA开发详解(第2版)20.3 使用Regex Tester工具测试测试 正则则表达式由于正则表达式表示复杂,也难免疏漏条件。Regex Tester是一款绿色、小巧的测试工具,用以测试正则表达式 是否正确。通过Regex Tester工具用户可以快速地发现正则 表达式中的错误码并纠正。Flex 4.0 RIA开发详解(第2版)20.4 Flex 4.0中使用正则则表达式正则表达式可用于匹配查找字符串中符合某种规则的字 符子串,也可使用正则表达式来验证输入数据。本节将介绍 如何在Flex 3.0中定义和使用正则表达式。Flex 4.0 RIA开
6、发详解(第2版)20.4.1 使用RegExp类类定义义正则则表达式1使用“/”符定义正则表达式 2使用字符串定义正则表达式Flex 4.0 RIA开发详解(第2版)20.4.2 使用RegExp类类匹配数据1使用RegExp类的exec()方法匹配数据 2使用RegExp类的test()方法匹配数据 3使用String类的match()方法匹配数据Flex 4.0 RIA开发详解(第2版)20.4.3 Flex中使用正则则表达式实实例前面章节中介绍过使用验证组件来规范输入数据。使用 正则表达式也可完成此功能。正则表达式相比验证组件的优 势在于,正则表达式定义简单、灵活、方便。使用正则表达 式可以非常方便地规范任何条件的数据。Flex 4.0 RIA开发详解(第2版)20.5 小结结本章介绍了正则表达式的定义语法,如何在Flex中使用 正则表达式。使用正则表达式可高效地匹配查找符合规则的 子串。正则表达式可方便地定义复杂的规则。对于复杂的规 则,若采用代码来表示,会产生较多的代码行,并且逻辑复 杂、容易出错。另外,使用正则表达式远比自定义的算法效 率要高。