[ js ] 正規表達式 exec 跟 match 的差異

作者: art1 (人,原來不是人)   2017-06-11 00:20:24
在 http://regexr.com/ 網站練習正規表達式時很方便,開始用 js 測試時就傻了
一開始用 exec,結果想要的結果永遠只傳回第一筆,明明有加 gm 選項了
想說改用 match 看看,這次可以得到想要的筆數了,但沒仔細確認陣列內容
之後上網查兩個的差異,再比對兩個陣列的內容有什麼地方不一樣
才發現 exec 只會傳回一筆結果,但當正規表達式的規則內有用到 () 分組時,
exec 傳回的結果才會保留 () 分組的資料,而 match 只會傳回相符的文字
所以會用到分組內的資料且需要比對多次時,須使用 exec 搭配迴圈來獲得所有結果
作者: LPH66 (-6.2598534e+18f)   2017-06-11 14:43:00
嗯...match 如果用沒有 /g 的 RegExp 回傳的跟 exec 一樣喔不過因為 exec 是 RegExp 的函數, 它可以去更改這個 RegExp的 lastIndex 屬性, 所以才能在有 /g 之下用迴圈全部抓出也因為這樣, 屬於字串的 match 函數不能動屬性只好一次回傳match 是 Javascript 的四個 RegExp 比對函式裡有沒有 /g 結果差很多的一個; RegExp 的兩個有沒有 /g 就是能不能進行多筆比對, 剩下那一個則是沒差
作者: s25g5d4 (function(){})()   2017-06-12 02:08:00
在這裡也能見到 LPH66 大大

Links booklink

Contact Us: admin [ a t ] ucptt.com