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