RegExp类是正则表达式类,它的构造函数可以是2个或者1个. 第一个参数是匹配的模式(字符串),第二个参数是是额外的处理指令.
它有2个方法用来匹配模式 test方法,比较常用,不做介绍. exec方法,有一个参数,即被匹配的字符串, 返回一个数组, 数组的第一个条目为第一个匹配字符串,其他的为反向引用.
String类的replace方法可以扩展,也就是说方法的第一个参数是一个正则表达式,第二个数是一个替换的字符串.同时第二个参数可以一个方法function.例如:
var bb = "a bat,a cat,a fAt,a faT cat";
var reg = /at/gi;
alert(bb.replace(reg,function(sMatch){alert(sMatch); return "dog";}));
看看会输出什么,^_^.
反向引用: 是按照从左到右遇到的作括号的顺序进行创建和编号的.例如:
var sToMatch="#123456";
var reg=/#(\d+)/;
reg.test(sToMatch);
alert(RegExp.$1);
输出的是123456;
RegExp的实例属性:
global: bool值,用g表示 是否设置全局选项.
ignoreCase:bool值,用i表示 是否忽略大小写.
lastIndex:整数,大表下次匹配将会从哪个字符位置开始(只有当使用exec()或test()函数后才会填入,否则为0);
source: 增则表达式的原字符串形式.例如:/[bar]*/ 的source将返回[bar]*
RegExp的静态属性列表:
静态属性有2个名字,一个是复杂名,一个是以美元符号开头的简短名字
复杂名 短名 描述
input $_
最后用于匹配的字符串(传递给test或exec方法的字符串)
lastMatch $&
最后匹配的字符lastParen $+
最后匹配的分组leftContext $`
上次配配的前面的字符串multiline $*
用于指定是否所有的表达式都使用多行模式的bool值
rightContext $'
上次配配之后的字符串
例子:
var sMatch="this has been a short ,short number";
var reg = /(s)hort/g;
reg.test(sMatch);
alert(RegExp.$_); // this has been a short ,short number
alert(RegExp.$`);// this has bean a
alert(RegExp.$');// ,short number
alert(RegExp.$&)// short
alert(regExp.$+);// s
上面的例子使用的短名称,可以用"."操作符,但是 大部分都应该用"[ ]"标记,因为有些script不支持.regexp["$_"]
每次执行exec 或者test时这些属性除了multiline以为都会被重新设置.但是IE和opera不支持multiline属性,所以最好单独的每个表达式设置m选项,而不要直接设置这个标记.
posted on 2006-11-30 13:49
邓兵野 阅读(216)
评论(0) 编辑 收藏 所属分类:
javascript