javascript - 正则表达式向前看和向后看

标签 javascript regex replace regex-lookarounds

我想替换所有®在我的网站上登录 <sup>®</sup>使用 JavaScript。但我必须注意,如果周围没有支撑物(可能来自 CMS 用户),我只会更换它们。

我已经尝试了以下方法,但效果不佳。

html.replace(/(?<!<sup>.{0,})®(?!.{0,}<\/sup>)/g, "<sup>&reg;</sup>")

它只关心 </sup>由于“无效的组说明符名称”,标记和在 Safari 中不起作用。也许这里有人可以帮我解决这个问题。

最佳答案

您可以使用带有交替和回调的正则表达式替换:

var input = "Hello ® and also <sup>®</sup>";
var output = input.replace(/<sup>®<\/sup>|®/g, (x) => x === "<sup>®</sup>" ? x : "<sup>®</sup>");
console.log(output);

交替逻辑首先急切地尝试寻找 <sup>®</sup>事件。失败后,它还会尝试查找任何其他 ®发生。然后,在回调中,我们用 <sup> 换行仅在尚未包装时才标记。

关于javascript - 正则表达式向前看和向后看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71349235/

相关文章:

c - 浏览文本文件,用变量的定义/内容替换变量的所有实例

javascript - 更改从 URL 加载的图像的大小

javascript - 使用html为iphone浏览器创建自动完成框

java - 如何使用 replaceFirst 替换 {....}

java - 替换一个字符串。

java - Java中的RegEx替换字符串

javascript - Shiny :使用shinyjs禁用tabPanel()

javascript - 父元素不遵循子 img 尺寸

ruby-on-rails - Rails validates_format_of with Regex 在换行的情况下失败

python - 两者之间的匹配!在 python 的文件中