使用正則
var regString=new RegExp("string");
預設正則匹配第一個出現的字串,如果想全域匹配需要加參數“g”
var regString=new RegExp("string","g");
同時,正則預設是區分大小寫如果想不區分大小寫需要參數“i”
var regString=new RegExp("string","gi");
也可以使用perl風格的正則如下
var regString=/string/gi;
正則的函數和參數
var sm="a bat, a Cat, a fAt baT,a faT cat";
var par=/at/gi;
alert(sm.search(par));output: 3
exex()方法有一個字串參數,返回一個數組,數組中的第一個條目是第一個匹配,其他是反向引用
var s=par.exec(sm);
alert(s);output :at
String對象的match()方法會返回包含字串的所有匹配數組,這個方法調用string對象,同時傳給RegExp對象
var matchs=sm.match(par);alert(matchs);output:at,at,At,aT,at
擴充字元串方法
var par2=/at/g;
var sp=sm.replace(par2,"%");
alert(sp);output:a b%,a C%,a fAt baT,a faT c%
replace(old,new)使用第二個參數替換第一個參數
var spl=sm.split(",");
alert(spl);
//標誌(參數)
//i 不區分大小寫匹配
//g 全域匹配,找到所有匹配,而不是找到第一個匹配後停止
//m 多行匹配,這時 ^ 匹配字串開頭和每一行的開頭,$ 匹配每一行的結尾和字串結尾
元字元
([{\^$|)*?+.
使用元字元必須使用\進行轉義
//支援Regex的 String 對象的方法
search() 方法用於檢索字串中指定的子字串,或檢索與Regex相匹配的子字串。找到匹配則返回字串的起始位置,否則返回-1
match() 方法可在字串內檢索指定的值,或找到一個或多個Regex的匹配。找到則返回匹配結果的數組。該數組的內容依賴於 regexp 是否具有全域標誌 g。
replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與Regex匹配的子串。該方法返回一個新的字串。
split() 方法用於把一個字串分割成字串數組。該方法返回一個新的字串。String.split() 執行的操作與 Array.join執行的操作是相反的。
/n 換行
/r 斷行符號
/t 定位字元
/v 垂直定位字元
/f 換頁符
[……]
[^……]
/s 任何空白符
/w 任何ACSII單字元,等同於[a-zA-Z0-9_]
/d 任何單個數字,等同於[0-9]
/S 任何非空白符
/W 任何非ACSII單字元,等同於[^a-zA-Z0-9_]
/D 任何非單個數字,等同於[^0-9]
^ 匹配字串頭部
$ 匹配字串尾部
. 除換行和終止符之外的任一字元
? 0次或1次
+ 1次或多次
* 0次或多次
{n} n次
{n,m} 至少n次,但不多於m次
{n,} n到無窮次
非窮盡重複[在重複字元後加?]
??
+?
*?
{n,m}?
選擇 |
分組 ()
只組合(?:……)
引用 \n 必須和分組聯合使用,按分組順序(從左至右)
RegExp 對象屬性
屬性
global g
ignoreCase i
multiline m
source /[ab]/i =>[ab]
lastIndex
方法
exec() 和match()全域模式相同,返回匹配數組,否則返回null
test() 返回true和false,等價於調用exec()。
compile() 方法用於在指令碼執行過程中編譯Regex。也可用於改變和重新編譯Regex。
###############
{
var reTest=/[ba]/i;
alert(reTest.global);
alert(reTest.ignorCase);
alert(reTest.multiline);
alert(reTest.source);
}
{
var sToMatch="bbq is short for barbecue";
var par=/b/g;
par.exec(sToMatch);
alert(par.lastIndex);
par.exec(sToMatch);
alert(par.lastIndex);
par.exec(sToMatch);
alert(par.lastIndex);
}
{compile()
var str="Every man in the world! Every woman on earth!";
patt=/man/g;str2=str.replace(patt,"person");document.write(str2+"<br />");patt=/(wo)?man/g; 重新編譯了pattpatt.compile(patt);str2=str.replace(patt,"person");document.write(str2);
}