JavaScript Regex(替换),如果缺少一个又一个单词

JavaScript Regex (replace) if absence of word after other word

本文关键字:一个又一个 单词 如果 Regex 替换 JavaScript      更新时间:2023-09-26

假设我有以下字符串:

b(hello world)b

现在我想把b(变成b(<b>,但前提是没有添加<b>。这是我目前得到的:

var string = "abc b(yolo)b cba";   
string.replace("b'((?!<b>)", "b(<b>");

不幸的是,我以前从未使用过Regex语句,所以我不知道我在做什么,它不工作…

所以,如果你理解我的问题,请提供答案,也许解释一下你是如何寻求一个没有<b>b(的,因为这是这里的主要困难。

try this:

string.replace(/b'((?!<b>)/g, 'b(<b>')

你是在正确的轨道上,但字符串不是一个有效的正则表达式在javascript中,负向前看是?!而不是!?

编辑-你的后续问题

您需要反向查看,首先检查</b>是否在)b之前出现。Javascript regex引擎不支持向后看,但你可以通过回调来实现:

string.replace(/(<'/b>)?')b/g, (m, c) => c ? m : `</b>${m}`)

或者如果不支持es6

string.replace(/(<'/b>)?')b/g, function (m, c) {
 return c ? m : '</b>' + m
})