使用正则表达式简介
正则表达式描述字符模式。通常,正则表达式用于验证文本值是否符合特定模式(例如,验证用户输入的电话号码位数是否正确),或者替换与特定模式匹配的部分文本值。
正则表达式可能非常简单。例如,假设您要确认特定字符串与"ABC"是否匹配,或者要使用某些其它文本替换字符串中出现的每个"ABC"。在这种情况下,您可以使用以下正则表达式,它定义了依次包含字母 A、B 和 C 的模式:
/ABC/
请注意,正则表达式文本是使用正斜杠 (/) 界定的。
正则表达式模式也可能非常复杂,有时候表面上看起来晦涩难懂,例如,以下与有效电子邮件地址匹配的表达式:
/([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/
通常,您使用正则表达式在字符串中搜索模式以及替换字符。在这些情况下,您将创建一个正则表达式对象,并将其作为几个 String 类方法之一的参数。下列 String 类方法将正则表达式作为参数:match()、replace()、search() 和split()。有关这些方法的详细信息,请参阅"在字符串中查找模式并替换子字符串"。
RegExp 类包含以下方法:test() 和 exec()。有关详细信息,请参阅对字符串使用正则表达式的方法。
常见正则表达式任务
正则表达式具有几种常见用途,本章详细介绍了这些用途:
- 创建正则表达式模式
- 在模式中使用特殊字符
- 标识多个字符的序列(如"两位数"或"介于 7 到 10 个字母之间")
- 标识字母或数字范围中的任何字母(如"从 a 到 m 的任何字母")
- 标识可能的字符集中的字符
- 标识子序列(模式内的片断)
- 基于模式匹配和替换文件
重要概念和术语
以下参考列表包含将会在本章中使用的重要术语:
- 转义字符 (Escape character):此字符指示应将后面的字符视为元字符,而不是字面字符。在正则表达式语法中,反斜杠字符 () 就是转义字符,因此反斜杠后跟另一个字符是一个特殊代码,而不仅仅是字符本身。
- 标志 (Flag):此字符指定有关应如何使用正则表达式模式的一些选项,如是否区分大写和小写字符。
- 元字符 (Metacharacter):在正则表达式模式中具有特殊含义的字符,它与从字面意义上在模式中表示该字符相对。
- 数量表示符 (Quantifier):一个或几个字符,指示应将模式部分重复多少次。例如,使用数量表示符来指定美国邮政编码应包含 5 个或 9 个数字。
- 正则表达式 (Regular expression):用于定义字符模式的程序语句,它可用来确认其它字符串是否与该模式匹配,或者替换字符串的一部分。
完成本章中的示例
学习本章的过程中,您可能想要自己动手测试一些示例代码清单。由于本章中的代码清单主要由正则表达式模式组成,因此测试示例涉及以下几个步骤:
- 创建一个新的 Flash 文档。
- 选择一个关键帧并打开"动作"面板。
- 创建一个 RegExp(正则表达式)变量,例如:
var pattern:RegExp = /ABC/;
- 复制示例的模式并将其作为 RegExp 变量的值进行分配。例如,在上一行代码中,模式是等号右侧的代码的一部分,不包含分号 (/ABC/)。
- 创建一个或多个包含适合于测试正则表达式的字符串的 String 变量。例如,如果要创建正则表达式来测试有效的电子邮件地址,则创建几个包含有效和无效电子邮件地址的 String 变量:
var goodEmail:String = "bob@example.com"; var badEmail:String = "5@$2.99";
- 添加几行测试 String 变量的代码,以确定它们是否与正则表达式模式匹配。这些将是您希望通过使用 trace()函数或通过写入舞台的文本字段而输出到屏幕上的值。
trace(goodEmail, " is valid:", pattern.test(goodEmail)); trace(badEmail, " is valid:", pattern.test(badEmail));
例如,假设 pattern 为有效的电子邮件地址定义了正则表达式模式,前面几行代码将此文本写入"输出"面板:
bob@example.com is valid: true 5@$2.99 is valid: false