您的位置:首页 > Web前端 > JavaScript

javascript与正则表达式基础一

2008-01-25 15:23 525 查看
1、 正则表达式元字符:
( { { / ^ $ | } ? * + .
2、 特殊字符:
/t 制表符
/n 换行符
/r 回车符
/f 换页符
/a alert字符
/e escape字符
/cX 与X相对应的控制字符
/b 回退字符
/v 垂直制表符
/0 空字符
注意:如果通过RegExp构造函数来使用它们,则都必须进行双重转义。
3、 字符类:
3.1简单类
例:假设想匹配”bat”,”cat”,”fat”。使用简单类就可以方便的解决问题:
var sToMatch=”a bat,a cat,a fat bat,a fat cat”;
var reBatCatRat=/[bcf]at/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”bat”,”cat”,”fat”,”bat”,”fat”,”cat”。
3.2负向类(negation class)
例,同上,如果只想获取包含at但不能以b或c开头单词。
var sToMatch=”a bat,a cat,a fat bat,a fat cat”;
var reBatCatRat=/[^bc]at/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”fat”,”fat”。
3.3范围类(range class)
例,要测试的字符恰好按照字符编码的顺序排列的时候,范围类就很管用。
var sToMatch=”n1,n2,n3,n4,n5,n6,n7,n8,n9”;
var reBatCatRat=/n[1-4]/gi;
var arrMatches= sToMatch.match(reBatCatRat);
其中arrMatches数组现在存放了这些值:”n1”,”n2”,”n3”,”n4”。
3.4组合类(combination class)
如:[a-m1-4/n]
主意:在内部的类之间不要有空格。
Javascript/ECMAScript不支持某些其他正则表达式实现中的联合类(union class)和交叉类(intersection class)。这意味着不能有类似[a-m[p-z]]或者[a-m[^b-e]之类的模式出现。
3.5预定义类
如下表:

代码

等同于
匹配
.
[^/n/r]
除了换行和回车之外的任意字符
/d
[0-9]
数字
/D
[^0-9]
非数字字符
/s
[/t/n/x0B/f/r]
空白字符
/S
[^/t/n/x0B/f/r]
非空白字符
/w
[a-zA-Z_0-9]
单词字符
/W
[^a-zA-Z_0-9]
非单词字符
4、 量词(quantifier)
可以指定某个特定模式出现的次数。
4.1简单量词

代码

描述
?
出现零次或一次
*
出现零次或多次(任意次)
+
出现一次或多次(至少出现一次)
{n}
一定出现n次
{n,m}
至少出现n次但不超过m次
{n,}
至少出现n次
4.2贪婪的、惰性的、支配性的量词

贪婪

惰性
支配
描述
?
??
?+
出现零次或一次
*
*?
*+
出现零次或多次(任意次)
+
+?
++
出现一次或多次(至少出现一次)
{n}
{n}?
{n}+
一定出现n次
{n,m}
{n,m}?
{n,m}+
至少出现n次但不超过m次
{n,}
{n,}?
{n,}+
至少出现n次
注意:浏览器对支配量词的支持还很不完善,IE和Opera不支持支配量词,如果要用它,就会抛出一个错误。Mozilla不会产生错误,但是它会将支配量词看着实贪婪的。

另外:还有一些复杂模式:如分组,反向应用,候选,非捕获性分组,前瞻,边界,多行模式等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: