[問題] regex exec二個大括號間字串問題

看板Ajax作者 (Richie)時間2年前 (2022/02/24 14:26), 編輯推噓1(104)
留言5則, 1人參與, 2年前最新討論串1/1
var b="{{dffdfdfdf}} {{eeeee}}" ,a; while( a=/\{\{([^}]+)\}\}/g.exec(b)) { } 我想取出所有{{}}的字串 請問這樣為啥一直跑符合第一個patterm的地方 也就是無窮的回圈 但改用match就可以了?不過要自已把{{}}去掉 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.143.36 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1645683972.A.1E7.html

02/24 15:33, 2年前 , 1F
你寫一個 regex 在那裡的話每次執行會新建一個 regex 物件
02/24 15:33, 1F

02/24 15:34, 2年前 , 2F
你需要另起一個變數儲存一個 regex 物件, 再用它來 .exec
02/24 15:34, 2F

02/24 15:35, 2年前 , 3F
.exec 會在你所用的 regex 物件中紀錄之前看到哪裡了
02/24 15:35, 3F

02/24 15:35, 2年前 , 4F
(紀錄在那個物件的 .lastIndex 裡面) 下次 .exec 時就可以
02/24 15:35, 4F

02/24 15:36, 2年前 , 5F
從那個地方開始; 你這樣寫每次都新建自然都只給你第一個
02/24 15:36, 5F
文章代碼(AID): #1Y5oK47d (Ajax)
文章代碼(AID): #1Y5oK47d (Ajax)