我正在嘗試建立一個正規表示式,用一些 HTML 標記替換所有符號“$$”,例如 <someTag></someTag>
。
我使用這個正規表示式,但它並沒有涵蓋所有情況:
$$(\S[^\*]+\S)$$
'aaa $3$$ c$ ddd'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>') // works 'aaa $3$$ c$ $$ddd$$'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>') // doesn't work, should be 'aaa <a1>123</a1> c$ <a1>ddd</a1>'
console.log('aaa $3$$ c$ ddd'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>')) // works console.log('aaa $3$$ c$ $$ddd$$'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>')) // doesn't work, should be 'aaa <a1>123</a1> c$ <a1>ddd</a1>'
不是正規表示式解決方案,但它有效。說明:使用分隔符號 (
$$
) 分割字串。然後建立一個新字串result
並插入陣列的每個部分。然後檢查目前索引是奇數還是偶數,並根據情況添加開始標記 (prefix
) 或結束標記 (suffix
)。我希望這有幫助!最快的方法是使用非貪婪的點全法:
/\$\$(.*?)\$\$/sg
#https://regex101.com/r/upveAX/1
單獨使用點總是會更快,因為它不依賴斷言或類別結構,
這會增加 3 倍的效能開銷。