我正在使用这个正则表达式,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]
标记不会。如果它周围没有代码标签,我将如何显示粗体?
答案 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组存在时,它将返回而不会发生变化。如果未定义,则返回替换字符串。