用正则表达式替换删除bb代码

时间:2016-02-19 00:32:28

标签: javascript regex

我正在尝试通过Javascript删除BBCode标记但是我无法理解如何。

将所有标签添加到数组中,例如:

var bbcodes = ["[b]", "[/b]"];

然后搜索我的文本并用“”替换bbcode。

for (i=0; i < bbcodes.length; i++) {
    selTextStrip = selTextStrip.replace(bbcodes[i], ""); 
}

意识到这只会取代我尝试添加表达式的第一次出现:

for (i=0; i < bbcodes.length; i++) {
    selTextStrip = selTextStrip.replace(new RegExp(bbcodes[i], 'g'), ""); 
}

然而,这会做到以下几点:

[b]BBCode[/b]更改为[]BBCode[]

如何更改RegExp以套装所有这些标签:

"[b]", "[/b]", "[i]", "[/i]", "[u]", "[/u]", "[s]", "[/s]", "[left]", "[/left]", "[center]", "[/center]", "[right]", "[/right]", "[quote]", "[/quote]", "[code]", "[/code]", "[list]", "[/list]", "[img]", "[/img]", "[spoil]", "[/spoil]"

除此之外,如果我想从文本中删除以下标记 - &gt; [color=red]text[/color]我需要删除[color=red][/color]的表达式?注意'red'可以更改为任意长度,也可以是十六进制值([color=#ff0000]text[/color]

我尝试将[color =(。*?)]添加到数组中,但之前只删除'color ='而不是#hex值,也不删除'[]'

提前致谢。

2 个答案:

答案 0 :(得分:1)

text.replace(/\[\/?(?:b|i|u|s|left|center|right|quote|code|list|img|spoil|color).*?\]/g, '')

还会提供color=foo剥离。

或使用

text.replace(/\[\/?[^\]]*\]/g, '')

删除所有类型的[foo something]代码。

答案 1 :(得分:0)

您可以使用正则表达式\[\\?\w*\]

查看this