想象一下,我有以下字符串:
b(hello world)b
现在我想将b(
转换为b(<b>
,但仅限于已添加<b>
的情况。这是我到目前为止所得到的:
var string = "abc b(yolo)b cba";
string.replace("b\((?!<b>)", "b(<b>");
不幸的是我之前从未使用过Regex语句,所以我不知道自己在做什么,而且它不起作用......
所以,如果你理解我的问题,请提供答案,也许可以解释你是如何寻找一个b(
未跟随<b>
的人,因为这是主要的困难。
答案 0 :(得分:3)
试试这个:
string.replace(/b\((?!<b>)/g, 'b(<b>')
你是在正确的轨道上,但字符串不是javascript中的有效正则表达式,否定前瞻是?!
而不是!?
修改 - 您的后续问题
首先要检查</b>
是否在)b
之前,你需要一个负面的观察。 Javascript正则表达式引擎不支持lookbehind,但您可以通过回调实现此目的:
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
})