可能大家对正则表达式会感到很陌生,或者有点印象的人会觉得它很晦涩难懂。虽然在我们看起来正则表达式确实很晦涩难懂。但如果熟悉后,其实你会发现 正则表达式是一种简单而功能强大的标准。
正则表达式的用于查找和处理字符串中的匹配文本的模式。它能用很简短的语句来完成一项复杂繁琐的字符串查找替换匹配处理。
好了下边详细说说在as3中正则表达式。
在ActionScript 3.0 按照 ECMAScript 第 3 版语言规范 (ECMA-262) 中的定义实现正则表达式。
在这先看看一般用于匹配邮箱地址匹配的正则表达式:
/([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/
先别被吓着,但你懂得了正则表达式后要理解上边的例子并不困难。后边在讲述了正则表达式的基本语法后再回过头来跟大家说说这个正则表达式的。
在正则表达式中我们用两条斜杠“/”来界定一个正则表达式,这个界定就跟一个functrion 的一对大括号一样"{", "}"
他们界定了一句正则表达式的有效范围
如:/ABC/
这是一句简单的正则达式,如果我们用这个正则表达式来匹配一串字符串的话,它意义就相当于给你检查这句字符串里有没有“ABC”这个字符串.
在正则表达式的语法中 字符基本分为”字符“,”元字符“,‘元序列’
元字符:就是一些具有特殊意义的字符如下:^ $ \ . * + ? ( ) [ ] { } |
这些字符是保留的他们就跟关键字一样有特殊的意义。我们把他们成为元字符.
一个带凡斜杠“\”的字符在正则表达式里叫转义符。他们具有特殊的意义。
元序列:是在正则表达式模式中具有特殊含义的字符序列
跟元字符一样他们都是有特殊意义的字符转。而已一般的元序列都是由“\”加字符串的形式组成。
像 :指标符\t,回车符 \r 换行符\n 等。。。当然并非全部都是以凡斜杠 "\"加字符这样的转义符形式。它可能是一些带式数量的数量表示符
像{n},{n,},{n,m} 这样的形式存在。
字符、元字符和元序列关于元字符
下表总结了可以在正则表达式中使用的元字符:
元字符
描述
|
匹配字符串的开头。设置 |
|
匹配字符串的结尾。设置 |
|
对特殊字符的特殊元字符含义进行转义。 |
|
匹配任意单个字符。 只有设置 |
|
匹配前面重复零次或多次的项目。 有关详细信息,请参阅数量表示符。 |
|
匹配前面重复一次或多次的项目。 有关详细信息,请参阅数量表示符。 |
|
匹配前面重复零次或一次的项目。 有关详细信息,请参阅数量表示符。 |
|
在正则表达式中定义组。以下情况下使用组:
有关详细信息,请参阅组。 |
|
定义字符类,字符类定义单个字符可能的匹配:
在字符类中,使用连字符 (
在字符类中,插入反斜杠对 ] 和
在字符类中,以下字符(通常为元字符)被看作一般字符(非元字符),不需要反斜杠:
有关详细信息,请参阅字符类。 |
|
用于逻辑"或"操作,匹配左侧或右侧的部分:
|
元序列是在正则表达式模式中具有特殊含义的字符序列。下表说明了这些元序列:
元序列
描述
和
|
指定前一项目的数值数量或数量范围:
有关详细信息,请参阅数量表示符。 |
|
匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单词字符,则也匹配字符串的开头或结尾。 |
|
匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。 |
|
匹配十进制数字。 |
|
匹配除数字以外的任何字符。 |
|
匹配换页符。 |
|
匹配换行符。 |
|
匹配回车符。 |
|
匹配任何空白字符(空格、制表符、换行符或回车符)。 |
|
匹配除空白字符以外的任何字符。 |
|
匹配制表符。 |
|
匹配字符代码由十六进制数字 nnnn 指定的 Unicode 字符。例如, |
|
匹配垂直换页符。 |
|
匹配单词字符( |
|
匹配除单词字符以外的任何字符。 |
|
匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。 |
再来我们说说正则表达式中的另外几种字符
:字符类,数量表示符,逻辑符”或“
字符类:
字符类里包含了3个跟元字符一样功能的字符
] - \
字符类
元字符
在字符类中的含义
|
定义字符类的结尾。 |
|
定义字符范围(请参阅字符类中字符的范围)。 |
|
定义元序列并撤销元字符的特殊含义。 |
字符类
除能够保持特殊含义的元字符外,下列元序列在字符类中也具有元序列功能:
元序列
在字符类中的含义
|
匹配换行符。 |
|
匹配回车符。 |
|
匹配制表符。 |
|
匹配具有指定 Unicode 代码点值(由十六进制数字 nnnn 定义)的字符。 |
|
匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。 |
其它正则表达式元序列和元字符在字符类中看作普通字符。
在字符类中我们可以用于对中括号来表示一个字符的范围
/[a-z0-9]/
这句正则表达式的意思就是匹配一个或多个由小写字母或者数字组成的字符或字符串
像 "a" "abcd"" "a1v2" 都能匹配这句正则表达式。
但像“_a" ''!a1234" "&Dda2"这几个字符则不能匹配刚才的正则表达式。
而字符”^“在一个字符类的前面时他的意思是取反的意思,像/[^a-z0-9]/的意思就是匹配一个或多个小写字母或者数字组成的字符或字符串意外的任何字符。
但要注意的是如果^在一个字符类范围的后边的话,它只表示尖括号字符而没有取反的意义。
像/[#$%&^]/
在这再说说 字符类的范围 [ ]在一对中括号内的字符类匹配当中的一个或多个当中出现的字符而不表示一个字符串。
也就是说[abc]并不表示字符串“abc”它匹配只要出现当中的任意一个字符组合的形式,
在正则表达式里要表示一个字符串或者单词类的由多个字符组成的字符类我们一般用 组()括起来表示
像(abc)它就匹配a后边必须是b而b你必须是c否则都不匹配。
下边说说数量表示符
使用数量表示符指定字符或序列在模式中的重复次数
数量表示符
数量表示符元字符
描述
|
匹配前面重复零次或多次的项目。 |
|
匹配前面重复一次或多次的项目。 |
|
匹配前面重复零次或一次的项目。 |
和
|
指定前一项目的数值数量或数量范围:
|
您可以将数量表示符应用到单个字符、字符类或组:
/a+/
匹配重复一次或多次的字符 a
。/\d+/
匹配一个或多个数字。/[abc]+/
匹配重复的一个或多个字符,这些字符可能是 a
、b
或 c
中的某个。/(very, )*/
匹配重复零次或多次的后跟逗号和空格的单词 very
。
逻辑"或"
在正则表达式中使用 |
(竖线)字符可使正则表达式引擎考虑其它匹配。例如,下面的正则表达式匹配单词 cat、dog、pig 和 rat
中的任意一个:
var pattern:RegExp =
/cat|dog|pig|rat/;
您可以使用括号定义组以限制逻辑"或"字符 | 的范围。下面的正则表达式匹配 cat
后跟 nap
或 nip
:
var pattern:RegExp =
/cat(nap|nip)/;
组
您可以使用括号在正则表达式中指定组,如下所示:
/class-(\d*)/
之前在字符类那里已经提到过了。下边再 说说
组组是模式的子部分。您可以使用组实现以下操作:
|
字符)的子模式。 \1
以匹配先前匹配的组,或类似地在 String 类的 replace()
方法中使用 $1
)。 最后说的是
下表列出了可以为正则表达式设置的五种标志。每种标志都可以作为正则表达式对象属性进行访问。
标志
属性
描述
|
|
匹配多个匹配。 |
|
|
不区分大小写的匹配。应用于 |
|
|
设置此标志后, |
|
|
设置此标志后, |
|
|
允许扩展的正则表达式。您可以在正则表达式中键入空格,它将作为模式的一部分被忽略。这可使您更加清晰可读地键入正则表达式代码。 |
请注意这些属性都是只读属性。您在设置正则表达式变量时,可以设置标志(g
、i
、m
、s
和 x
),如下所示:
var re:RegExp = /abc/gimsx;
但是,您无法直接设置命名属性。例如,下列代码将导致错误:
var re:RegExp = /abc/; re.global = true; // 这会产生错误。
好了先写到这。这些入门后以后还会在出相关的正则表示式的具体实例。