定義
RegExp 是正則表達式的縮寫。
直接量語法:
/pattern/attributes
創(chuàng)建 RegExp 對象的語法:
new RegExp(pattern, attributes);
- 參數(shù) pattern 是一個字符串怀酷,指定了正則表達式的模式或其他正則表達式瞬痘。
- 參數(shù) attributes 是一個可選的字符串肛根,包含屬性 "g"升熊、"i" 和 "m"虚青。
i 執(zhí)行對大小寫不敏感的匹配。 g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)苞也。 m 執(zhí)行多行匹配。
ECMAScript 標(biāo)準(zhǔn)化之前粘秆,不支持 m 屬性如迟。如果 pattern 是正則表達式,而不是字符串攻走,則必須省略該參數(shù)殷勘。
定義 RegExp
RegExp 對象用于存儲檢索模式。通過 new 關(guān)鍵詞來定義 RegExp 對象昔搂。以下代碼定義了名為 patt1 的 RegExp 對象玲销,其模式是 "e":
var patt1=new RegExp("e");
var patt2=/e/g; // "g" 參數(shù) ("global")
RegExp 對象的方法
RegExp 對象有 3 個方法:test()、exec() 以及 compile()摘符。
test()
test() 方法檢索字符串中的指定值贤斜。返回值是 true 或 false。
例子:
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
由于該字符串中存在字母 "e"逛裤,以上代碼的輸出將是:
true
exec()
exec() 方法檢索字符串中的指定值瘩绒。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配带族,則返回 null锁荔。
例子 1:
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));
由于該字符串中存在字母 "e",以上代碼的輸出將是:
e
例子 2:
在使用 "g" 參數(shù)時蝙砌,exec() 的工作原理如下:
找到第一個 "e"阳堕,并存儲其位置
如果再次運行 exec()跋理,則從存儲的位置開始檢索,并找到下一個 "e"恬总,并存儲其位置
var patt1 = new RegExp("e", "g");
do {
result = patt1.exec("The best things in life are free");
document.write(result);
}
while (result != null)
由于這個字符串中 6 個 "e" 字母前普,代碼的輸出將是:
eeeeeenull
compile()
compile() 方法用于修改 RegExp。也可以添加或刪除第二個參數(shù)越驻。
例子:
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d"); // 改變正則
document.write(patt1.test("The best things in life are free"));
由于字符串中存在 "e"汁政,而沒有 "d",以上代碼的輸出是:
truefalse