如何在不使用"(?<!)"的情况下实现负向后看正则表达式



我知道(?<!)运算符背后的负面外观,但Expo/React Native中使用的Javascript引擎似乎不支持它

export function processEmbedded(text: string): string {
return text.replace(/(?<!!)[Embedded]/gm, "![Embedded]");
}

我所做的有点古怪,因为我脱下衣服并重新添加。

export function processEmbedded(text: string): string {
return text
.replace(/![Embedded]/gm, "[Embedded]")
.replace(/[Embedded]/gm, "![Embedded]");
}

对于我的案例来说,它确实有效,但我很确定有一个边缘案例是无效的。

您可以使用以下捕获组来使用此解决方案:

export function processEmbedded(text: string): string {
return text.replace(/(^|[^!])[Embedded]/gm, "$1![Embedded]");
}

RegEx演示

CCD_ 2匹配第一捕获组中不是!的行或字符的开头。在替换中,我们使用$1反向引用将其放回。

相关内容

最新更新