RegExp類是正則表達式類,它的構(gòu)造函數(shù)可以是2個或者1個. 第一個參數(shù)是匹配的模式(字符串),第二個參數(shù)是是額外的處理指令.
它有2個方法用來匹配模式 test方法,比較常用,不做介紹.? exec方法,有一個參數(shù),即被匹配的字符串, 返回一個數(shù)組, 數(shù)組的第一個條目為第一個匹配字符串,其他的為反向引用.
String類的replace方法可以擴展,也就是說方法的第一個參數(shù)是一個正則表達式,第二個數(shù)是一個替換的字符串.同時第二個參數(shù)可以一個方法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";}));
看看會輸出什么,^_^.
反向引用: 是按照從左到右遇到的作括號的順序進行創(chuàng)建和編號的.例如:
var? sToMatch="#123456";
var reg=/#(\d+)/;
reg.test(sToMatch);
alert(RegExp.$1);?
輸出的是123456;
RegExp的實例屬性:
global:? bool值,用g表示 是否設(shè)置全局選項.
ignoreCase:bool值,用i表示 是否忽略大小寫.
lastIndex:整數(shù),大表下次匹配將會從哪個字符位置開始(只有當使用exec()或test()函數(shù)后才會填入,否則為0);
source: 增則表達式的原字符串形式.例如:/[bar]*/ 的source將返回[bar]*
RegExp的靜態(tài)屬性列表:
靜態(tài)屬性有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["$_"]
每次執(zhí)行exec 或者test時這些屬性除了multiline以為都會被重新設(shè)置.但是IE和opera不支持multiline屬性,所以最好單獨的每個表達式設(shè)置m選項,而不要直接設(shè)置這個標記.