如果它有围绕它的标签,请不要用正则表达式获取Word

时间:2015-05-12 02:44:53

标签: javascript regex bbcode

我正在使用这个正则表达式,TBH我甚至不确定它是否可能。

好的,如果文本周围有[code]个标签,那么内部的文本将不会被解析。让我告诉你我的意思:

[b]This text will appear bold[/b]
[code] [b]This text will not appear bold, but the bold tags will still be shown[/b] [/code]

所以基本上我正在尝试检查并查看文本周围是否有[code]个标签。我试过这个正则表达式:

/((?!\[code\])\[b\](.*)\[\/b\](?!\[\/code\]))/gi

所以基本上我认为(?!\[code\])不会显示文本,如果它周围有它,但它仍然无效。因此,即使文本周围有[code],内部文本也会突出显示,但[code]标记不会。如果它周围没有代码标签,我将如何显示粗体?

1 个答案:

答案 0 :(得分:1)

要避免某些事情,首先要匹配它并捕获它。要替换[b]标记之间的文字,除非这些标记位于[code]标记之外,您可以写:

txt=txt.replace(/(\[code\][\s\S]*?\[\/code\])|\[b\]([\s\S]*?)\[\/b\]/g, 
    function (m, g1, g2) { return g1 ? g1 : '<b>' + g2 + '</b>'; 
});

因此,当第1组存在时,它将返回而不会发生变化。如果未定义,则返回替换字符串。