JavaScript exec() 方法
定義和用法
exec() 方法用于檢索字符串中的正則表達式的匹配。
語法
RegExpObject.exec(string)
參數(shù) | 描述 |
---|---|
string | 必需。要檢索的字符串。 |
返回值
返回一個數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配,則返回值為 null。
說明
exec() 方法的功能非常強大,它是一個通用的方法,而且使用起來也比 test() 方法以及支持正則表達式的 String 對象的方法更為復(fù)雜。
如果 exec() 找到了匹配的文本,則返回一個結(jié)果數(shù)組。否則,返回 null。此數(shù)組的第 0 個元素是與正則表達式相匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。除了數(shù)組元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性聲明的是匹配文本的第一個字符的位置。input 屬性則存放的是被檢索的字符串 string。我們可以看得出,在調(diào)用非全局的 RegExp 對象的 exec() 方法時,返回的數(shù)組與調(diào)用方法 String.match() 返回的數(shù)組是相同的。
但是,當(dāng) RegExpObject 是一個全局正則表達式時,exec() 的行為就稍微復(fù)雜一些。它會在 RegExpObject 的 lastIndex 屬性指定的字符處開始檢索字符串 string。當(dāng) exec() 找到了與表達式相匹配的文本時,在匹配后,它將把 RegExpObject 的 lastIndex 屬性設(shè)置為匹配文本的最后一個字符的下一個位置。這就是說,您可以通過反復(fù)調(diào)用 exec() 方法來遍歷字符串中的所有匹配文本。當(dāng) exec() 再也找不到匹配的文本時,它將返回 null,并把 lastIndex 屬性重置為 0。
提示和注釋
重要事項:如果在一個字符串中完成了一次模式匹配之后要開始檢索新的字符串,就必須手動地把 lastIndex 屬性重置為 0。
提示:請注意,無論 RegExpObject 是否是全局模式,exec() 都會把完整的細節(jié)添加到它返回的數(shù)組中。這就是 exec() 與 String.match() 的不同之處,后者在全局模式下返回的信息要少得多。因此我們可以這么說,在循環(huán)中反復(fù)地調(diào)用 exec() 方法是唯一一種獲得全局模式的完整模式匹配信息的方法。
實例
在本例中,我們將全局檢索字符串中的 w3school:
<script type="text/javascript"> var str = "Visit w3school"; var patt = new RegExp("w3school","g"); var result; while ((result = patt.exec(str)
) != null) { document.write(result); document.write("<br />"); document.write(result.lastIndex
); } </script>
輸出:
w3school 14
TIY
- exec()
- 如何使用 exec() 來檢索字符串。