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