看板 Ajax 關於我們 聯絡資訊
http://regexr.com/ 網站練習正規表達式時很方便,開始用 js 測試時就傻了 一開始用 exec,結果想要的結果永遠只傳回第一筆,明明有加 gm 選項了 想說改用 match 看看,這次可以得到想要的筆數了,但沒仔細確認陣列內容 之後上網查兩個的差異,再比對兩個陣列的內容有什麼地方不一樣 才發現 exec 只會傳回一筆結果,但當正規表達式的規則內有用到 () 分組時, exec 傳回的結果才會保留 () 分組的資料,而 match 只會傳回相符的文字 所以會用到分組內的資料且需要比對多次時,須使用 exec 搭配迴圈來獲得所有結果 -- 新手上路 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.187.206 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1497111629.A.DBD.html
LPH66: 嗯...match 如果用沒有 /g 的 RegExp 回傳的跟 exec 一樣喔 06/11 14:43
LPH66: 不過因為 exec 是 RegExp 的函數, 它可以去更改這個 RegExp 06/11 14:44
LPH66: 的 lastIndex 屬性, 所以才能在有 /g 之下用迴圈全部抓出 06/11 14:44
LPH66: 也因為這樣, 屬於字串的 match 函數不能動屬性只好一次回傳 06/11 14:45
LPH66: match 是 Javascript 的四個 RegExp 比對函式裡 06/11 14:46
LPH66: 有沒有 /g 結果差很多的一個; RegExp 的兩個有沒有 /g 就是 06/11 14:46
LPH66: 能不能進行多筆比對, 剩下那一個則是沒差 06/11 14:47
s25g5d4: 在這裡也能見到 LPH66 大大 06/12 02:08