本篇文章主要是對js正則表達式中test,exec,match方法的區別進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
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 str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var regexp = /[A-E]/gi; var rs = str.match(regexp); //rs= Array('A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e'); Test Example 代碼如下: var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var regexp = /[A-E]/gi; var rs = regexp.test(str); // rs = true; boolean Exc Example 代碼如下: var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var regexp = /[A-E]/gi; var rs; while ((rs = regexp.exec(str)) != null) { document.write(rs); document.write(regexp.lastIndex); document.write("<br />"); } OUTPUT --------------------------------- A 1 B 2 C 3 D 4 E 5 a 27 b 28 c 29 d 30 e 31 Another Exc Example 代碼如下: var regexp = /ab*/g; var str = "abbcdefabh"; var rs; while ((rs = regexp.exec(str)) != null) { document.write(rs); document.write(regexp.lastIndex); document.write("<br />"); } OUTPUT --------------------------------- abb 3 ab 9