【发布时间】:2016-02-19 00:32:28
【问题描述】:
我正在尝试通过 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[]
如何更改正则表达式以适应所有这些标签:
"[b]", "[/b]", "[i]", "[/i]", "[u]", "[/u]", "[s]", "[/s]", "[left]", "[/left]", "[center]", "[/center]", "[right]", "[/right]", "[quote]", "[/quote]", "[code]", "[/code]", "[list]", "[/list]", "[img]", "[/img]", "[spoil]", "[/spoil]"
除此之外,如果我想从文本中删除以下标签 -> [color=red]text[/color] 我需要什么表达式同时删除 [color=red] 和 [/color]?请注意,“红色”可以更改为任意长度,也可以是十六进制值 ([color=#ff0000]text[/color])
我已尝试将 [color=(.*?)] 添加到数组中,但与以前一样,仅删除了 'color=' 而不是 #hex 值和 '[]'
提前致谢。
【问题讨论】:
-
您需要转义方括号:
"\[b\]", "\[/b\]", ... -
我将数组更改为:var bbcodes = ["\[b\]", "\[\/b\]"];但是只删除了“b”。
-
抱歉,将 javascript 的转义字符加倍:
"\\[b\\]", "\\[\\/b\\]" -
太棒了,成功了。对颜色有什么想法吗?
-
@Matt 你可以使用这个:github.com/thunderer/Shortcode。只需将
NullHandler或ContentHandler注册为所有短代码的默认处理程序,它们将被完全删除或仅从短代码标签中删除。你也可以使用这个:github.com/coduo/php-humanizer,因为它已经使用上面的库实现了短代码删除功能。如果您需要任何帮助,请告诉我。
标签: javascript regex