我正在使用
$(document).ready(function() {
$("body").html(
$("body").html().replace(/®/gi, '<sup>®</sup>').replace(/®/gi, '<sup>®</sup>')
);
});
在标记周围添加下标,但是如果®标记已经具有&lt; sup> &LT; / up&gt;标签,它是两次添加上标。任何人都可以帮我添加支票,如果它已经存在那么停止吗?
更新:: 我最终使用此代码,因为下面的答案干扰了我的其他javascript。
$(document).ready(function() {
$("p,h1,h2,h3,h4, td").each(function(){
$(this).html($(this).html().replace(/®/gi, '<sup>®</sup>').replace(/®/gi, '<sup>®
</sup>').replace('<sup><sup>', '<sup>').replace('</sup></sup>', '</sup>'));
});
});
答案 0 :(得分:3)
你想要这个:
$("body").html(
$("body").html()
.replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>®</sup>') // wrap ® if not wrapped yet
.replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>®</sup>') // wrap ® if not wrapped yet
);
<强>解释强>
而不是做其他人提出的建议并删除重复项后,您可以在正则表达式本身中为包装标记构建测试。
例如,此正则表达式仅在未被SUP
标记包围时才查找字符(实体):
/((?!<sup>\s*))®((?!\s*<\/sup>))/gi
和
/((?!<sup>\s*))®((?!\s*<\/sup>))/gi
JsFiddle演示:http://jsfiddle.net/co3sy5zo/
Runnable Snippet :(使用原生javascript代替jQuery)
document.body.innerHTML =
document.body.innerHTML
.replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>®</sup>')
.replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>®</sup>');
<sup>®</sup>
®
<sup>®</sup>
®
<sup> ® </sup>
<sup> ® </sup>
<sup>
®
</sup>
<sup> ®
</sup>
"Buy more Emo® Jeans!"
答案 1 :(得分:0)
有更有效的方法可以做到这一点,但最简单的方法就是:
$(document).ready(function() {
$("body").html(
$("body").html().replace(/®/gi, '<sup>®</sup>').replace(/®/gi, '<sup>®</sup>').replace('<sup><sup>','<sup>').replace('</sup></sup>','</sup>');
);
});
答案 2 :(得分:0)
添加更多替换
$("body").html().replace(/®/gi, '<sup>®</sup>').replace(/®/gi, '<sup>®</sup>').replace('<sup><sup>', '<sup>').replace('</sup></sup>', '</sup>')
答案 3 :(得分:0)
不使用正则表达式解决方案,您可以将replace语句包装在另一个替换语句中,该语句将<sup><sup>
替换为<sup>
,将</sup></sup>
替换为</sup>
。
另一种方法是搜索®
之前或之后的空格,假设在没有标记的情况下会有空格。
答案 4 :(得分:0)
你需要找到带有“sup”的“sup”,然后将父sup设置为html的“®”
$(document).ready(function() {
$("body").html(
$("body").html().replace(/®/gi, '<sup>®</sup>').replace(/®/gi, '<sup>®</sup>')); // this will break in script tags and a few other places.
$("sup sup").each(function () { // find sup with child sup
$(this).parent("sup").html("®");
});
});
这适用于原始文件在reg“®”
周围有空格的情况