Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
6年前关闭。
Improve this question
我正在寻找在html元素属性内用
我自己尝试过,但是我什么都没有。 regexp的细目分类也不错,因此我可以尝试理解它,并最终自己编写。
该循环将继续进行,直到HTML字符串中没有
之所以无法在单个正则表达式替换中完成此操作(或至少就我所知),是因为您需要在
但是,您也可以在替换项上使用回调函数来执行此操作:
这将首先匹配其中包含
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
6年前关闭。
Improve this question
我正在寻找在html元素属性内用
<
和>
替换<
和>
,或者换句话说,在="
和"
之间替换。我自己尝试过,但是我什么都没有。 regexp的细目分类也不错,因此我可以尝试理解它,并最终自己编写。
最佳答案
您可以使用while
循环来执行此操作,该循环检查是否仍有要替换的标签:
var htmlString = '<div id="<lol>"><span title="<>< <>< <>< fish">hover for fishies</span></div>';
while (htmlString.match(/="([^"]*)\&[gl]t;([^"]*)"/g)) {
htmlString = htmlString.replace(/="([^"]*)\>([^"]*)"/g, '="$1>$2"')
.replace(/="([^"]*)\<([^"]*)"/g, '="$1<$2"');
}
该循环将继续进行,直到HTML字符串中没有
>
或<
匹配项为止。之所以无法在单个正则表达式替换中完成此操作(或至少就我所知),是因为您需要在
<
和>
之间匹配每个="
或"
。使用正则表达式,这意味着您必须执行类似/="([^"]*)(\&[lg]t;([^"]*))*"/g
的操作来匹配所有这些,但这将意味着您无法再检索捕获组,这将使它无法替换。但是,您也可以在替换项上使用回调函数来执行此操作:
var htmlString = '<div id="<lol>"><span title="<>< <>< <>< fish">hover for fishies</span></div>';
htmlString = htmlString.replace(/="[^"]*\&[gl]t;[^"]*"/g, function(match) {
return match.replace(/\>/g, '>').replace(/\</g, '<');
});
这将首先匹配其中包含
<
或>
的每个属性,然后对字符串的匹配部分执行替换。