2012-06-22 64 views
1
var whatever = 'Some [b]random[/b] text in a [b]sentence.[/b]'; 

我如何可以替換<b>[b]每個實例,並與jQuery的</b>[/b]每個實例?替換特殊字符的所有實例

我試圖用正則表達式做,但我無法讓它正常工作。

+0

可能的重複:http://stackoverflow.com/questions/8193190/regex-not-working-within-javascript-string –

+1

@UserIsCorrupt - OP - 你應該在選擇一個之前閱讀所有答案。優化很重要:'1 <2' –

回答

1

用正則表達式,它會是:

whatever = whatever.replace(/\[b\]/g,'<b>').replace(/\[\/b\]/g,'</b>'); 

那會看起來是最簡單的解決

+0

爲什麼不把它們合併成一個?正則表達式有正斜槓的'?'。 – TheZ

+0

你需要lookbehinds來正確替換,replace()不支持...至少不容易 – jackwanders

+1

你確定嗎? http://stackoverflow.com/a/11163457/1217408 – TheZ

0
string.replace("[b]", "<b>"); 

如果做不到這一點,你可以使用PHP中使用str_replace如果它被上傳到數據庫做的事。

+0

這隻會替代第一個實例。 – UserIsCorrupt

0
whatever = whatever.replace(/\[b\]/g, '<br>').replace(/\[\/b\]/g, '</b>'); 

DEMO

3

優雅的方式:

whatever = whatever.replace(/\[(\/?)b\]/g,'<$1b>'); 

查看並測試它here

+0

好吧,看起來我錯了Javascript不支持lookbehinds – jackwanders

+0

http://regexr.com?31b9k是另一個不錯的網站來測試JS正則表達式 – Crontab

+0

@ user1215106對不起,只是個人喜好。我一直認爲SO的一個推動因素是提供有用的答案,並不一定需要人們訪問其他站點才能將它們置於上下文中。 – Crontab