我希望将html元素属性中的
我尝试过自己做,但是没有匹配到任何内容。如果能够分解正则表达式,那就更好了,这样我可以尝试理解并最终自己编写这些代码。
<
和>
替换为<
和>
,或者换句话说,在="
和"
之间进行替换。我尝试过自己做,但是没有匹配到任何内容。如果能够分解正则表达式,那就更好了,这样我可以尝试理解并最终自己编写这些代码。
<
和>
替换为<
和>
,或者换句话说,在="
和"
之间进行替换。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"');
}
>
或 <
匹配项为止。="
和 "
之间的每一个 <
或 >
。使用正则表达式,这意味着你必须像这样做:/="([^"]*)(\&[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, '<');
});
这将首先匹配每个属性,其中包含<
或>
,然后对字符串的匹配部分执行替换。
string.replace(/="[^"]+"/g,function($0){return $0.replace(/</g,"<").replace(/>/g,">");})
这行代码的作用:
="
开头,以"
结尾的文本<
替换为<
>
替换为>
在函数中,$0
代表匹配的字符串="[^"]+"
。
访问此页面获取有关字符串替换的更多详细信息。
function removeDoubleEncoding( element ){
Array.prototype.forEach.call( element.attributes, function replaceString( attribute ){
attribute.value = attribute.value.replace( '<', '<' ).replace( '>', '>' );
} );
}
因此,使用:
<body class="<erg>">
你可以按照以下方式应用该函数...
removeDoubleEncoding( document.body );
最终得到:
<body class="<erg>">
<*="
和"*>
之间的任何地方都更好。 - bearfriend