[問題] 去除括號

看板RegExp (正規表示式 Regular Expression)作者 (西門貓)時間12年前 (2012/11/14 11:21), 編輯推噓1(1010)
留言11則, 5人參與, 最新討論串1/1
我在JS使用正規表示式 原始字串: {abd : [ {id:value},{name:value} , {id:value},{name:value} ]} 目標字串: [ {id:value},{name:value} , {id:value},{name:value} ] 我用了 /((^[^[]*\:))|(}$)/ 來取代 可是結果卻變成 [ {id:value},{name:value} , {id:value},{name:value} ] } 最後一個沒被去掉 但是我在正規表示式的測試網站卻是我想要的結果 不太明白為什麼JS下不成功>< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.68.117

11/14 13:07, , 1F
可能是原始字串中的}後面還有東西?
11/14 13:07, 1F

11/14 13:07, , 2F

11/14 18:01, , 3F
你 regex 結尾的 / 後面要加一個 g 才會多次取代呀
11/14 18:01, 3F

11/14 22:15, , 4F
字串單純的話..直接 \[.*\] 就抓的出來了
11/14 22:15, 4F

11/14 22:16, , 5F
看你寫的pattern 要匹配到 }結尾的前一個字元- 0
11/14 22:16, 5F

11/14 22:17, , 6F
\[.*(?=\}) 醬試試看..
11/14 22:17, 6F

11/14 22:20, , 7F
/((^[^[]*\:))|(}$)/ 我看起來也和你的目標字串沒關係阿
11/14 22:20, 7F

11/15 00:30, , 8F
抱歉,剛學regex,還不是很熟,謝謝大家的幫助~
11/15 00:30, 8F

11/18 11:36, , 9F
在{ a : b }中要取出b,正規表示式可以寫成
11/18 11:36, 9F

11/18 11:37, , 10F
/^\s*{.*?\:\s*(.*?)\s*}\s*$/
11/18 11:37, 10F

11/18 11:37, , 11F
"{a:b}".match(/^\s*{.*?\:\s*(.*?)\s*}\s*$/)[1] // b
11/18 11:37, 11F
文章代碼(AID): #1Gemv7X8 (RegExp)
文章代碼(AID): #1Gemv7X8 (RegExp)