Posted on 2008-01-23 23:32
thomas.chen 阅读(403)
评论(0) 编辑 收藏 所属分类:
JavaScript
1. 基础
1.1. 简介
正则表达式就是由普通字符(例如字符 a 到 z)以及元字符组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。所以她是一种可以用于模式匹配和替换的强有力的工具。
其作用如下:
u 测试字符串的是否符合某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
u 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
1.2. 基本语法
正则表达式由两类字符组成:元字符 (metacharacter)和字符。所谓元字符是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。请看一个简单的JavaScript正则表达式的例子:
/^jim{2,6}/
该表达式应该念成:匹配某字符串,该字符串由j开始,后面紧跟i,接着跟着m,其中m必须出现最少2次,最多6次。所以该表达式可以匹配:jimmm , jimmmmmm,但是不可以匹配jim。这里:
“/” …”/” :表示JavaScript正则表达定义的开始和结束。
^ :匹配输入字符串的开始位置
{2,6} :最少匹配 n 次且最多匹配 m 次
这里^,{2,6}就是正则表达式的元字符。
1.3. JavaScript正则表达式的元字符
1.3.1. Character Classes
用来匹配字符串中特定的字符
字符
|
匹配
|
例子
|
[…]
|
匹配方括号里面的任何一个字符
|
[a-z]:表示匹配a到z的任何一个小写字符
g[ae]y:表示可以匹配gay或者gey,但是不可以匹配gaey
|
[^…]
|
不可以匹配方括号里面的任何一个字符
|
[^a-z]:表示不可以匹配a到z的任何一个小写字符
|
"\w
|
匹配任何一个单词字符。等价于[a-zA-Z0-9_]
|
|
"\W
|
匹配任何一个非单词字符。等价于[^a-zA-Z0-9_]
|
|
"\d
|
匹配任何一个单词数字。等价于[0-9]
|
/^[1-9]\d*$/:表示匹配以1到9中任何一个数字为开始,后面跟着任意多个(0或者多个)数字的字符串。即正整数
|
"\D
|
匹配任何一个非单词数字。等价于[^0-9]
|
|
"\s
|
匹配任何空白字符。
|
|
"\S
|
匹配任何非空白字符
|
|
|
|
|
1.3.2. Repetition Characters
用来定义其前导部分重复出现的次数
字符
|
匹配
|
例子
|
{n,m}
|
表示其前导部分连续最少出现n次,最多出现m次
注意在逗号和两个数之间不能有空格。n,m是一个非负整数
|
o{1,3}: 将匹配 "fooooood" 中的前三个 o
|
{n}
|
表示其前导部分连续出现n次
n 是一个非负整数
|
o{2}: 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o
|
{n,}
|
表示其前导部分连续最少出现n次
n 是一个非负整数
|
|
+
|
表示其前导部分连续最少出现1次,等价于{1,}
|
|
*
|
表示其前导部分连续最少出现0次,即出现0次,或者多次。等价于{0,}
|
|
?
|
表示其前导部分连续可以出现0次,或者1次。等价于{0,1}
|
/"w{3}"d?/ : 表示匹配3个单词字符和一个可选数字
|
1.3.3. Anchor Characters
...待续