如果 JS 周围有标签,不要用正则表达式抓取单词
Don't Grab Word With Regex If It Has Tags Around It JS
我在使用这个正则表达式时遇到了问题,老实说,我什至不确定是否可行。
好的,基本上如果文本周围有 [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]
标签不会。如果它周围没有代码标签,我将如何只显示粗体?
避免某事的方法是先匹配它并捕获它。要替换包含在 [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 组存在时,它会原封不动地返回。如果未定义,则返回替换字符串。
我在使用这个正则表达式时遇到了问题,老实说,我什至不确定是否可行。
好的,基本上如果文本周围有 [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]
标签不会。如果它周围没有代码标签,我将如何只显示粗体?
避免某事的方法是先匹配它并捕获它。要替换包含在 [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 组存在时,它会原封不动地返回。如果未定义,则返回替换字符串。