2012-06-22 63 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