仅在边界内时替换特定字符

Replace specific character only when within a boundary

本文关键字:字符 替换 边界      更新时间:2023-09-26

仅在边界内替换特定字符。

例如,仅当html实体包含在单引号内时才替换它。

输入:

<i>Hello</i> '<i>How are you</i>'

输出:

<i>Hello</i> '&lt;i&gt;How are you&lt;/i&gt;'

您可以使用带有回调的replace

var s = "<i>Hello</i> '<i>How are you</i>'";
var r = s.replace(/('[^']+')/g, function($0, $1) {
                     return $1.replace(/</g, '&lt;').replace(/>/g, '&gt;'); });
//=> <i>Hello</i> '&lt;i&gt;How are you&lt;/i&gt';

您需要使用多个正则表达式,首先捕获单引号内的文本,然后替换所有出现的字符。

var input = "<i>Hello</i> '<i>How are you</i>'";
var quoted = input.match(/'.*'/)[0];
var output = quoted.replace("<", "&lt;").replace(">", "&gt;");
// output == "<i>Hello</i> '&lt;i&gt;How are you&lt;/i&gt;'"