使用 Javascript 用 标签包装所有注册表,除非它们已经有 标签 [重复]

2023-12-24

提前致谢。

我在用

  $(document).ready(function() {
           $("body").html(
    $("body").html().replace(/&reg;/gi, '<sup>&reg;</sup>').replace(/®/gi, '<sup>&reg;</sup>')
   );
        });

在注册标记周围添加下标,但如果 ® 标记已经具有 标记,则会添加上标两次。任何人都可以帮我添加一张支票来停止它(如果它已经存在)吗?

更新:: 我最终使用了这段代码,因为下面的答案干扰了我的 javascript 的其余部分。

 $(document).ready(function() {
   $("p,h1,h2,h3,h4, td").each(function(){
     $(this).html($(this).html().replace(/&reg;/gi, '<sup>&reg;</sup>').replace(/®/gi, '<sup>&reg;       
      </sup>').replace('<sup><sup>', '<sup>').replace('</sup></sup>', '</sup>'));
   });
 });

你要这个:

$("body").html(
  $("body").html()
    .replace(/((?!<sup>\s*))&reg;((?!\s*<\/sup>))/gi, '<sup>&reg;</sup>') // wrap &reg; if not wrapped yet
    .replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>&reg;</sup>') // wrap ® if not wrapped yet
);

解释:

您可以在正则表达式本身中为包装标签构建测试,而不是按照其他人的建议进行操作并删除重复项。

例如,此正则表达式仅查找未被包围的字符(实体)SUP tags:

/((?!<sup>\s*))®((?!\s*<\/sup>))/gi and /((?!<sup>\s*))&reg;((?!\s*<\/sup>))/gi

JsFiddle 演示:http://jsfiddle.net/co3sy5zo/ http://jsfiddle.net/co3sy5zo/

可运行的代码片段:(使用本机 javascript 而不是 jQuery)

document.body.innerHTML = 
  document.body.innerHTML
    .replace(/((?!<sup>\s*))&reg;((?!\s*<\/sup>))/gi, '<sup>&reg;</sup>')
    .replace(/((?!<sup>\s*))®((?!\s*<\/sup>))/gi, '<sup>&reg;</sup>');
<sup>&reg;</sup>
&reg;
<sup>®</sup>
®
<sup> &reg; </sup>
<sup> ® </sup>
<sup>
   &reg; 
</sup>
<sup> ® 
</sup>
"Buy more Emo&reg; Jeans!"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript 用 标签包装所有注册表,除非它们已经有 标签 [重复] 的相关文章

随机推荐