herodby
技术 笔记
posts - 14,  comments - 14,  trackbacks - 0
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

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜