【问题标题】:removing bb codes with regex replace使用正则表达式替换删除 bb 代码
【发布时间】: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。只需将NullHandlerContentHandler 注册为所有短代码的默认处理程序,它们将被完全删除或仅从短代码标签中删除。你也可以使用这个:github.com/coduo/php-humanizer,因为它已经使用上面的库实现了短代码删除功能。如果您需要任何帮助,请告诉我。

标签: javascript regex


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

还将提供color=foo剥离。

或者使用

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

去除各种[foo something]标签。

【讨论】:

    【解决方案2】:

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

    this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2015-05-10
      相关资源
      最近更新 更多