首頁  >  文章  >  web前端  >  js正規表示式中test,exec,match方法的差異說明_javascript技巧

js正規表示式中test,exec,match方法的差異說明_javascript技巧

WBOY
WBOY原創
2016-05-16 17:01:401112瀏覽

js正規表示式中test,exec,match方法的差異說明

test
test 傳回 Boolean,尋找對應的字串中是否存在模式。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true


exec
exec 尋找並傳回目前的符合結果,並以陣列的形式傳回。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);
如果不存在模式,則arr 為null,否則arr 總是長度為1 的數組,其值就是目前符合項。 arr 還有三個屬性:index 目前符合的位置;lastIndex 目前符合項目結束的位置(index 目前符合項目的長度);input 如上範例中 input 就是 str。


exec 方法受參數 g 的影響。若指定了 g,下次呼叫 exec 時,會從上個符合的 lastIndex 開始尋找。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg .exec(str)[0]);
上述兩個輸出都是1a。現在再看看指定參數g:
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0 ]);
alert(reg.exec(str)[0]);
上述第一個輸出1a,第二個輸出1b。


match
match 是 String 物件的一個方法。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));
match 這個方法有點像exec ,但:exec 是RegExp 物件的方法;math 是String 物件的方法。二者還有一個不同點,就是參數 g 的解釋。
如果指定了參數 g,那麼 match 一次傳回所有的結果。
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str .match(reg)); // 此句同上句的結果是一樣的
此結果為一個數組,有三個元素,分別是:1a、1b、1c。

JavaScript中常用到正規表示式, 而正規表示式中常用到Match和Test這兩個函數,當然還有Exec. 這裡以程式碼實例來區分它們之間的不同吧.

Match Example

複製程式碼 代碼如下:var regexp = /[A-E]/gi;
var rs = str.match(regexp);
//rs= C', 'D', 'E', 'a', 'b', 'c', 'd', 'e');



Test Example


複製程式碼 程式碼如下:var str = "vgHIJJ +KLMNQRhUVA>; /[A-E]/gi;
var rs = regexp.test(str);
// rs = true; boolean



Exc Example






複製程式碼


程式碼如下:

var str = "ABCDEFGHIJKLMNOPQxy A-E]/gi;

var rs;
while ((rs = regexp.exec(str)) != null)
{
    document.write(rs);
 (regexp.lastIndex);
    document.write("
");
}

OUTPUT
---------------------------------
A    1
B   2
C   3

D   4
E   5a   27
b   28
c   29
b   28? 🎜>Another   Exc Example
複製程式碼


程式碼如下:var str = "abbcdefabh";
var rs;
while ((rs = regexp.exec(str)) != null)
{
    document.write (rs);
    document.write(regexp.lastIndex);    document.write("
");

}

OUTPUT
---------------------------------
abb   3

ab     9
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn