本對象包含正則表達(dá)式模式以及表明如何應(yīng)用模式的標(biāo)志。
語法 1 re = /pattern/[flags]
語法 2 re = new RegExp("pattern",["flags"])
參數(shù)
re
必選項。將要賦值為正則表達(dá)式模式的變量名。
Pattern
必選項。要使用的正則表達(dá)式模式。如果使用語法 1,用 "/" 字符分隔模式。如果用語法 2,用引號將模式引起來。
Flags
可選項。如果使用語法 2 要用引號將 flag 引起來。標(biāo)志可以組合使用,可用的有:
g (全文查找出現(xiàn)的所有 pattern)
i (忽略大小寫)
m (多行查找)
示例
下面的示例創(chuàng)建一個包含正則表達(dá)式模式及相關(guān)標(biāo)志的對象(re),向您演示正則表達(dá)式對象的用法。在本例中,作為結(jié)果的正則表達(dá)式對象又用于 match 方法中:
function MatchDemo()
{
var r, re; // 聲明變量。
var s = "The rain in Spain falls mainly in the plain";
re = new RegExp("ain","g"); // 創(chuàng)建正則表達(dá)式對象。
r = s.match(re); // 在字符串 s 中查找匹配。
return(r);
}
返回值: ain,ain,ain,ain
屬性 lastIndex 屬性 | source 屬性
方法 compile 方法 | exec 方法 | test 方法
要求 版本 3
請參閱 RegExp 對象 | 正則表達(dá)式語法 | String 對象
exec 方法
用正則表達(dá)式模式在字符串中運行查找,并返回包含該查找結(jié)果的一個數(shù)組。
rgExp.exec(str)
參數(shù)
rgExp
必選項。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對象。
str
必選項。要在其中執(zhí)行查找的 String 對象或字符串文字。
說明
如 果 exec 方法沒有找到匹配,則它返回 null。如果它找到匹配,則 exec 方法返回一個數(shù)組,并且更新全局 RegExp 對象的屬性,以反映匹配結(jié)果。數(shù)組的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出現(xiàn)的任意一個子匹配。這相當(dāng)于沒有設(shè)置全局標(biāo)志 (g) 的 match 方法。
如果為正則表達(dá)式設(shè)置了全局標(biāo)志,exec 從以 lastIndex 的值指示的位置開始查找。如果沒有設(shè)置全局標(biāo)志,exec 忽略 lastIndex 的值,從字符串的起始位置開始搜索。
exec 方法返回的數(shù)組有三個屬性,分別是 input、index 和 lastIndex。Input 屬性包含了整個被查找的字符串。Index 屬性中包含了整個被查找字符串中被匹配的子字符串的位置。LastIndex 屬性中包含了匹配中最后一個字符的下一個位置。
示例
下面的例子舉例說明了 exec 方法的用法:
function RegExpTest()
{
var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
if (ver >= 5.5){ // 測試 JScript 的版本。
var src = "The rain in Spain falls mainly in the plain.";
var re = /\w+/g; // 創(chuàng)建正則表達(dá)式模式。
var arr;
while ((arr = re.exec(src)) != null)
document.write(arr.index + "-" + arr.lastIndex + arr + "\t");
}
else{
alert("請使用 JScript 的更新版本");
}
}
返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain
test 方法
返回一個 Boolean 值,它指出在被查找的字符串中是否存在模式。
rgexp.test(str)
參數(shù)
rgexp
必選項。包含正則表達(dá)式模式或可用標(biāo)志的正則表達(dá)式對象。
str
必選項。要在其上測試查找的字符串。
說明
test 方法檢查在字符串中是否存在一個模式,如果存在則返回 true,否則就返回 false。
全局 RegExp 對象的屬性不由 test 方法來修改。
示例
下面的例子舉例說明了 test 方法的用法:
function TestDemo(re, s)
{
var s1; // 聲明變量。
// 檢查字符串是否存在正則表達(dá)式。
if (re.test(s)) // 測試是否存在。
s1 = " contains "; // s 包含模式。
else
s1 = " does not contain "; // s 不包含模式。
return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。
}
函數(shù)調(diào)用:document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain."));
返回值:'The rain in Spain falls mainly in the plain.' contains 'ain+'
match 方法
使用正則表達(dá)式模式對字符串執(zhí)行查找,并將包含查找的結(jié)果作為數(shù)組返回。
stringObj.match(rgExp)
參數(shù)
stringObj
必選項。對其進(jìn)行查找的 String 對象或字符串文字。
rgExp
必選項。為包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對象。也可以是包含正則表達(dá)式模式和可用標(biāo)志的變量名或字符串文字。
說明
如果 match 方法沒有找到匹配,返回 null。如果找到匹配返回一個數(shù)組并且更新全局 RegExp 對象的屬性以反映匹配結(jié)果。
match 方法返回的數(shù)組有三個屬性:input、index 和 lastIndex。Input 屬性包含整個的被查找字符串。Index 屬性包含了在整個被查找字符串中匹配的子字符串的位置。LastIndex 屬性包含了最后一次匹配中最后一個字符的下一個位置。
如果沒有設(shè)置全局標(biāo)志 (g),數(shù)組的 0 元素包含整個匹配,而第 1 到 n 元素包含了匹配中曾出現(xiàn)過的任一個子匹配。這相當(dāng)于沒有設(shè)置全局標(biāo)志的 exec 方法。如果設(shè)置了全局標(biāo)志,元素 0 到 n 中包含所有匹配。
示例
下面的示例演示了match 方法的用法:
function MatchDemo()
{
var r, re; // 聲明變量。
var s = "The rain in Spain falls mainly in the plain";
re = /ain/i; // 創(chuàng)建正則表達(dá)式模式。
r = s.match(re); // 嘗試匹配搜索字符串。
return(r); // 返回第一次出現(xiàn) "ain" 的地方。
}
返回值:ain
本示例說明帶 g 標(biāo)志設(shè)置的 match 方法的用法。
function MatchDemo()
{
var r, re; // 聲明變量。
var s = "The rain in Spain falls mainly in the plain";
re = /ain/ig; // 創(chuàng)建正則表達(dá)式模式。
r = s.match(re); // 嘗試去匹配搜索字符串。
return(r); // 返回的數(shù)組包含了所有 "ain"
// 出現(xiàn)的四個匹配。
}
返回值:ain,ain,ain,ain
上面幾行代碼演示了字符串文字的 match 方法的用法。
var r, re = "Spain";
r = "The rain in Spain".replace(re, "Canada");
return r;
返回值:The rain in Canada
search 方法
返回與正則表達(dá)式查找內(nèi)容匹配的第一個子字符串的位置。
stringObj.search(rgExp)
參數(shù)
stringObj
必選項。要在其上進(jìn)行查找的 String 對象或字符串文字。
rgExp
必選項。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對象。
說明
search 方法指明是否存在相應(yīng)的匹配。如果找到一個匹配,search 方法將返回一個整數(shù)值,指明這個匹配距離字符串開始的偏移位置。如果沒有找到匹配,則返回 -1。
示例
下面的示例演示了 search 方法的用法。
function SearchDemo()
{
var r, re; // 聲明變量。
var s = "The rain in Spain falls mainly in the plain.";
re = /falls/i; // 創(chuàng)建正則表達(dá)式模式。
r = s.search(re); // 查找字符串。
return(r); // 返回 Boolean 結(jié)果。
}
返回值:18