正規表示式match()函式和exec()函式的區別
一.match()函式:
此函式可以檢索指定的字串,以查詢指定的值或者正規表示式的一個或者多個匹配。
當此函式與正規表示式相結合應用時,返回值和這規則表示式是否具有匹配修飾符g有著重要的關係,下面分別介紹一下:
1).不具有修飾符g:
[JavaScript] 純文字檢視 複製程式碼var str="I love antzone,and you?"; console.log(str.match(/an/));
當不具有修飾符g的時候,只會執行一次成功的匹配,返回值是一個陣列:
陣列的第0元素是匹配的文字,第一個元素是與正規表示式第一個子表示式匹配的文字,第二個是與正規表示式第二個子表示式匹配的文字,依次類推。上面的陣列元素之外,還有兩個特殊的物件屬性:index屬性宣告的是匹配文字的起始字元在目標字串中的位置,input屬性宣告的是對目標字串的引用。
特別注意:
在IE8和IE8以下瀏覽器中,此函式的返回的陣列也包含lastIndex資訊,用來表示匹配子串的下一個位置。
2).具有修飾符g:
當具有修飾符g的時候,match()函式的返回值就比較單純了,儲存的是所有匹配的文字。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var str="I love antzone,and you?"; console.log(str.match(/an/g));
特別注意:
在IE瀏覽器中,陣列的元素值,不但包含所有的匹配文字,而且還有index、input和lastIndex屬性。
二.exec()函式:
和match()函式一樣,具有修飾符g和沒有修飾符g,函式的返回值是有很大不同的。
1).不具有修飾符g:
這個時候exec()函式的返回值和match()函式不具有修飾符g的時候是一樣的。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var str="I love antzone,and you?"; var reg=/an/; console.log(reg.exec(str));
特別注意:
在IE8和IE8以下瀏覽器中,此函式的返回的陣列也包含lastIndex資訊,用來表示匹配子串的下一個位置。
2).具有修飾符g:
[JavaScript] 純文字檢視 複製程式碼var str="I love antzone,and you?"; var reg=/an/g; console.log(reg.exec(str));
具有修飾符g的時候和不具有修飾符g的時候,返回陣列值的唯一不同就是帶有修飾符g的具有lastIndex資訊。
regexp物件的lastIndex屬性指定的字元處開始檢索。當exec()找到了與表示式相匹配的文字時,在匹配後,會將regexp的lastIndex屬性設定為匹配文字的最後一個字元的下一個位置,於是可以通過反覆呼叫exec()來遍歷字串中的所有匹配文字。當exec()再也找不到匹配的文字時,它將返回null,並把lastIndex屬性重置為0。
最後總結:
1.match函式屬於String物件,exec函式屬於正則物件。
2.不具有修飾符g的時候,兩個函式的返回值是一樣的。
3.具有修飾符g的時候,match()函式返回的陣列存放的是所有匹配的文字,再無其他(IE瀏覽器是例外),但是exec函式返回的陣列存放的內容則要複雜一些,第0個元素是第一個成功匹配的文字,第一個元素是與正規表示式第一個子表示式匹配的文字,第二個是與正規表示式第二個子表示式匹配的文字,依次類推,同時還有三個特殊的物件屬性:index、input和lastIndex屬性。
相關文章
- python正規表示式函式match()和search()的區別詳解Python函式
- PHP preg match正規表示式函式的操作例項PHP函式
- 函式宣告和函式表示式的區別函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- Oracle正規表示式函式Oracle函式
- 正規表示式exec()函式只有第一執行有效分析函式
- 正規表示式中test、exec、match的區別介紹及括號的用法
- python內建函式-eval()函式與exec()函式的區別Python函式
- 正規表示式☞相關函式函式
- js表示式方式和函式語句方式宣告函式的區別JS函式
- php之正規表示式函式總結PHP函式
- 函式宣告與函式表示式有什麼區別?函式
- prop()函式和attr()函式的區別函式
- strcpy函式和memcpy函式的區別函式memcpy
- Oracle中的正規表示式(及函式)詳解Oracle函式
- js正規表示式常用函式詳解(續)JS函式
- Python正規表示式 findall函式詳解Python函式
- Python正規表示式常用函式詳解Python函式
- exec()函式函式
- jquery position()函式和offset()函式的區別jQuery函式
- # 普通函式和箭頭函式的區別函式
- 正規表示式使用replace()函式簡單介紹函式
- ORACLE正規表示式函式詳解--轉載整理Oracle函式
- jquery的$.each()函式和$.map()函式的區別jQuery函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- closest()函式parent()函式的區別函式
- JavaScript建構函式和普通函式的區別JavaScript函式
- exec函式族函式
- exec函式簇函式
- 正規表示式replace()函式第二個引數$&的作用函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- 正規表示式RegExp物件的compile()函式的作用物件Compile函式
- 箭頭函式和普通函式的10個區別函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- 簡述箭頭函式和普通函式的區別函式
- 為什麼正規表示式的test()函式總是返回true函式
- 函式表示式和函式宣告簡單介紹函式
- Oracle 正規表示式函式-REGEXP_REPLACE 使用例子Oracle函式