![](/img/trans.png)
[英]How might I perform conditional replacement using JavaScript's RegExp?
[英]JS / Ruby : partial replacement using regexp
我正在嘗試使用單個正則表達式替換html代碼的不同部分。
例如,我有這段文字:
option_!!NID!! [somme_text][5] some_text_option 5_option_some_text
使用此正則表達式:
content.replace(/(!!NID!!)|\\[(\\d)\\]|(\\d)_option/g, 1))
我希望得到:
option_1 [somme_text][1] some_text_option 1_option_some_text
但我有 :
option_1 [somme_text]1 some_text_option 1_some_text
有人可以告訴我如何使用一個正則表達式嗎? 因為我不明白為什么替換不只是替換括號之間的目標。
謝謝 :)
PS:我使用Ror,因此也可以使用ruby和JS解決方案。
整個比賽被替換。 這意味着您需要以不同的方式處理案件:
"option_!!NID!! [somme_text][5] some_text_option 5_option_some_text".
replace(/!!NID!!/g, "1").
replace(/\d_option/g, "1_option").
replace(/\[\d\]/g, "[1]")
然后,可以使用第二種情況的先行斷言來合並第一種情況和第二種情況:
"option_!!NID!! [somme_text][5] some_text_option 5_option_some_text".
replace(/!!NID!!|\d(?=_option)/g, "1").
replace(/\[\d\]/g, "[1]")
好的,我找到了解決方案。 這是一個兩步解決方案。
因此,一開始我有:
option_!!NID!! [somme_text][5] some_text_option 5_option_some_text
首先,我使用ruby方法String.gsub對字符串進行替換:
str.gsub!(/\\[(\\d)\\]|(\\d_option)/) { |result| result.gsub(/\\d/, '!!NID!!') }
完成此步驟后,我將:
option_!!NID!! [somme_text][!!NID!!] some_text_option !!NID!!_option_some_text
我現在可以使用JS在客戶端執行簡單的替換。
content.replace(/(!!NID!!)/g, 1)
和瞧:)
我現在得到了避免使用JS的任何丑陋行的預期結果。
如果您知道一個,我仍在尋找更好的解決方案:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.