2015-04-28 12 views
2

好的,我明白標題可能有點混亂,請讓我詳細說明。 因此,我開始製作BBCode輸入部分。然後它將代碼從BBCode轉移到HTML。現在的問題是我有最小的問題。讓我後我的代碼之前,我繼續:如何從JS中的正則表達式中獲取所選的str.replace值

var newer = $('#my_textarea').val().replace(/\[b\]/gi, '<b>'); 

現在讓我這樣說,它與<b>標籤正確替換[b]標籤。我的問題是我不知道如何爲所有標籤做到這一點。我曾嘗試使用這種縮短代碼:

var newer = $('#my_textarea').val().replace(/\[(?:b|u|i)\]/gi, '<???>'); 

然後,它會用正確的HTML標籤替換所有標籤(粗體,下劃線,斜體和)。然而,我將如何去做這件事?我將如何用發現的BBCode標籤替換HTML標籤?我的意思是在正則表達式(?:b|u|i)的這部分中選擇三個字母中的任何一個,我怎樣才能將相同的字母添加到HTML標記中?你明白我的問題是什麼? :)請幫助,謝謝!

+0

一種方法是使陣列的所有BB標籤,遍歷數組創建一個正則表達式和替換每個 – charlietfl

回答

3

使用$2獲得第二個選擇的組

var newer = $('#my_textarea').val().replace(/(\[(b|u|i)\])/gi, '<$2>'); 

好發部位爲理解和創造的正則表達式:https://regex101.com/

也捕抓到[b],[u],[i][\b],[\u],[\i]使用以下命令:

var newer = $('#my_textarea').val().replace(/(\[((\/?)(b|u|i))\])/gi, '<$2>'); 
+0

太謝謝你了! :)但有一個問題,爲什麼2美元而不是1美元? –

+0

如果你在我給你的網站輸入'/(\ [(b | u | i)\])/ gi',你會看到第一組$ 1是我們正在替換的表達式,第二組是括號內的字母。 – Nayish

+0

哦,好的,謝謝! :) –

0

正則表達式下面將BB代碼轉換爲HTML:

result = subject.replace(/\[(b|i|p)\](.*?)\[\/(b|i|p)\]/g, "<$1>$2</$3>"); 

你需要添加更多標籤,但你的想法。


演示

http://jsfiddle.net/tuga/sp5597aj/1/

相關問題