功能說明:該函數通過對指定你的字符串進行一次匹配檢測,獲取字符串中的第一個與正則表達式的內容,并且將匹配的內容和子匹配的結果存放在返回數組中
基本方法:objReg.exec(string)
objReg,RegExp對象的名稱
string,要進行匹配的字符串
正則表達式exec()函數:
exec() 方法用于檢索字符串中的正則表達式的匹配。
返回值是一個數組,但是此數組的內容和正則對象是否是全局匹配有著很大關系:
1.沒有g修飾符:
在非全局匹配模式下,此函數的作用和match()函數是一樣的,只能夠在字符串中匹配一次,如果沒有找到匹配的字符串,那么返回null,否則將返回一個數組,數組的第0個元素存儲的是匹配字符串,第1個元素存放的是第一個引用型分組(子表達式)匹配的字符串,第2個元素存放的是第二個引用型分組(子表達式)匹配的字符串,依次類推。同時此數組還包括兩個對象屬性,index屬性聲明的是匹配字符串的起始字符在要匹配的完整字符串中的位置,input屬性聲明的是對要匹配的完整字符串的引用。
特別說明:
在非全局匹配模式下,IE瀏覽器還會具有lastIndex屬性,不過這時是只讀的。
2.具有g修飾符:
在全局匹配模式下,此函數返回值同樣是一個數組,并且也只能夠在字符串中匹配一次。不過此時,此函數一般會和lastIndex屬性匹配使用,此函數會在lastIndex屬性指定的字符處開始檢索字符串,當exec()找到與表達式相匹配的字符串時,在匹配后,它將lastIndex 屬性設置為匹配字符串的最后一個字符的下一個位置。可以通過反復調用exec()函數遍歷字符串中的所有匹配,當exec()函數再也找不到匹配的文本時,它將返回null,并把lastIndex 屬性重置為0。
數組的內容結構和沒有g修飾符時完全相同。
特別說明:
如果在一個字符串中完成了一次模式匹配之后要開始檢索新的字符串,就必須手動地把lastIndex屬性重置為0。
語法結構:
RegExpObject.exec(string)
參數列表如下:
參數名稱 |
語義解釋 |
string |
必需。要檢索的字符串。 |
瀏覽器支持:
IE瀏覽器支持此方法。
火狐瀏覽器支持此方法。
谷歌瀏覽器支持此方法。
實例代碼:
實例一:
1
2
3
|
var str= "I love antzone ,this is animate" ; var reg=/an/; console.log(reg.exec(str)); |
實例二:
1
2
3
4
|
var str= "the name 123 and 456" ; var reg=/\d/g; reg.lastIndex=15; console.log(reg.exec(str)); |
在全局模式下可以使用lastIndex屬性設置在字符串中查找指定字符時開始的位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<html> <script language= "javascript" type= "text/javascript" > //設置匹配的字符串 var objStr= "我的手機號13522222222,他的手機號13288888888,她的手機號碼13699999999" ; //設置正則表達式,匹配以13開頭11位字符串,全局匹配 var reg=/13(/d)(/d{8})/g; //執行exec函數,盡管是全局匹配的正則表達式,但是exec方法只對指定的字符串進行一次匹配,獲取字符串中第一個與正則表達式想匹配的內容,并且將匹配內容和子匹配的結果存儲到返回的數組中 var arr=reg.exec(objStr); //循環輸出結果 for ( var i=0;i<arr.length;i++){ document.write( "<li>" +arr[i]+ "<br>" ); } </script> </html> |