正则表达式向前看和向后看
Regex lookahead AND lookbehind
我想将我网站上的所有 ®
标志替换为 <sup>®</sup>
和 JavaScript。但我必须注意,如果周围没有 sup(可能来自 CMS 用户),我只会更换它们。
我已经尝试了以下方法,但效果不佳。
html.replace(/(?<!<sup>.{0,})®(?!.{0,}<\/sup>)/g, "<sup>®</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>
标签进行包装。
我想将我网站上的所有 ®
标志替换为 <sup>®</sup>
和 JavaScript。但我必须注意,如果周围没有 sup(可能来自 CMS 用户),我只会更换它们。
我已经尝试了以下方法,但效果不佳。
html.replace(/(?<!<sup>.{0,})®(?!.{0,}<\/sup>)/g, "<sup>®</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>
标签进行包装。