看板 RegExp 關於我們 聯絡資訊
我在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
n6333373:可能是原始字串中的}後面還有東西? 11/14 13:07
n6333373:http://i.minus.com/ib1JC3RUvZMUQd.png 11/14 13:07
CindyLinz:你 regex 結尾的 / 後面要加一個 g 才會多次取代呀 11/14 18:01
qwertmn:字串單純的話..直接 \[.*\] 就抓的出來了 11/14 22:15
qwertmn:看你寫的pattern 要匹配到 }結尾的前一個字元- 0 11/14 22:16
qwertmn:\[.*(?=\}) 醬試試看.. 11/14 22:17
qwertmn:/((^[^[]*\:))|(}$)/ 我看起來也和你的目標字串沒關係阿 11/14 22:20
gn00742754:抱歉,剛學regex,還不是很熟,謝謝大家的幫助~ 11/15 00:30
kilva:在{ a : b }中要取出b,正規表示式可以寫成 11/18 11:36
kilva:/^\s*{.*?\:\s*(.*?)\s*}\s*$/ 11/18 11:37
kilva:"{a:b}".match(/^\s*{.*?\:\s*(.*?)\s*}\s*$/)[1] // b 11/18 11:37