仅在边界内替换特定字符

时间:2015-04-01 20:33:48

标签: javascript regex

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

例如,仅当用单引号括起来时才替换html实体。

输入:

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

输出:

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

2 个答案:

答案 0 :(得分:3)

您可以将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';

答案 1 :(得分:0)

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

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;'"