正則表示式筆記之四
在JavaScript中的每個正則表示式都是一個物件。這些物件有下面的一些屬性。
1, 例項屬性:RegExp的例項有一些開發人員可以使用的屬性。
global - Boolean值,表示g(全域性選項)是否設定
ignoreCase - Boolean值,表示i(忽略大小寫選項)是否設定
lastIndex - 整數,代表下次匹配將會從哪個字元位置開始(只有當使用exec()或test()函式才會填入,否則為0
multiline - Boolean值,表示m(多行模式選項)是否設定
source - 正則表示式的源字串形式。例如表示式/[ba]*/的source將返回"[ba]*"
在這些屬性中,真正有用的是lastIndex,它可以告訴你正則表示式在某個字串中停止之前,查詢樂多元:
var sToMatch = "bbq is short for barbecue";
var regB = /b/g;
regB.exec(sToMatch);
alert(regB.lastIndex); // output "1";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "2";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "18";
regB.exec(sToMatch);
alert(regB.lastIndex); // output "21";
如果想從頭開始匹配,可以將lastIndex設為0.
2, 靜態屬性: 靜態屬性對所有的正則表示式都有效。這些屬性都有兩個名字: 一個複雜名字和一個以$開頭的簡短名字,如下:
長名 短名 描述
input $_ 最後用於匹配的字串(傳遞給exec()或test()的字串)
lastMatch $& 最後匹配的字元
lastParen $+ 最後匹配的分組
leftContext $` 在上次匹配的前面的子串
multiline $* 用於指定是否所有的表示式都使用多行模式的選項
rightContext $' 在上次匹配之後的子串
這些屬性可以告訴你,關於剛使用的exec()或test()完成的匹配的一些特定資訊。如:
var sToMatch = "this has been a short, short summer";
var regShort = /(s)hort)/g;
regShort.test(sToMatch);
alert(RegExp.input); // output "this has been a short, short summer"
alert(RegExp.leftContext); // output "this has been a "
alert(RegExp.rightContext); // output ", short summer"
alert(RegExp.lastMatch); // output "short";
alert(RegExp.lastParen); // output "s"
記住,每次執行exec()或test()時,所有的屬性(除multiline)都會被重新設定。