【问题标题】:Remove BBCode with Regex in Javascript在 Javascript 中使用 Regex 删除 BBCode
【发布时间】:2011-08-19 05:28:42
【问题描述】:

我正在尝试删除带有这些标签之间的属性和内容的 BBCode。我正在使用从here 获得的这个正则表达式。我还尝试了在 stackoverflow 上找到的其他正则表达式,但它们对我不起作用,只是我在这里复制的那个是最接近的。

([[\/\!]*?[^\[\]]*?])

我在*?]) 之前添加了一个.,它可以匹配标签之间的文本,但也匹配pokemon,我不希望这样。

**Regex**: ([[\/\!]*?[^\[\]].*?])

**Text**: I'm a pokemon master and I like
[TAG] this [/TAG] pokemon [TAG] and this [/TAG] text...

我用这个网络来测试正则表达式http://regexpal.com/

谁能帮帮我?

提前致谢。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:
    str = str.replace(/\[(\w+)[^\]]*](.*?)\[\/\1]/g, '');
    

    jsFiddle.

    【讨论】:

      【解决方案2】:

      这就是你想要的:

      .replace(/\[(\w+)[^w]*?](.*?)\[\/\1]/g, '$2');
      

      http://jsfiddle.net/L2rGx/1/

      基本上你捕获标签之间的值,然后用那个值替换整个字符串。

      虽然使用正则表达式来做这件事并不是一种非常干净的方式......

      对不起,亚历克斯,但您似乎没有阅读。

      【讨论】:

      • 几乎一样……呵呵。我从一个论坛得到一个提要,我只使用 javascript 来开发一些东西。谢谢。
      • 什么是[^w]?这将如何允许任意属性?
      【解决方案3】:

      应该这样做:

      \[(\w+).*?\].*?\[/\1\]
      

      这将寻找与开始标签匹配的结束标签 - 并接受开始标签上的属性。 JavaScript 代码应该是:

      str = str.replace(/\[(\w+).*?\].*?\[\/\1\]/, "");
      

      【讨论】:

        猜你喜欢
        • 2014-07-21
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-30
        • 1970-01-01
        相关资源
        最近更新 更多