首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript用<sup>标记包装所有正则标记,除非它们已经具有<sup>标记

使用Javascript用<sup>标记包装所有正则标记,除非它们已经具有<sup>标记
EN

Stack Overflow用户
提问于 2014-11-24 23:50:24
回答 4查看 3.4K关注 0票数 4

提前谢谢。

我在用

代码语言:javascript
复制
  $(document).ready(function() {
           $("body").html(
    $("body").html().replace(/&reg;/gi, '<sup>&reg;</sup>').replace(/®/gi, '<sup>&reg;</sup>')
   );
        });

若要在regmark周围添加下标,但如果标记已经具有< sup >标记,则将添加两次上标。有人能帮我加上一张支票,如果已经有了吗?

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

代码语言: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>'));
   });
 });
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-25 00:49:28

你想要这个

代码语言:javascript
复制
$("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
);

解释:

您可以在regex本身中为包装标记构建测试,而不是像其他人建议的那样删除副本。

例如,此正则表达式仅在字符(实体)未被SUP标记包围时才会找到:

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

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

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

代码语言:javascript
复制
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>');
代码语言:javascript
复制
<sup>&reg;</sup>
&reg;
<sup>®</sup>
®
<sup> &reg; </sup>
<sup> ® </sup>
<sup>
   &reg; 
</sup>
<sup> ® 
</sup>
"Buy more Emo&reg; Jeans!"

票数 3
EN

Stack Overflow用户

发布于 2014-11-24 23:53:50

有更有效的方法来做到这一点,但最简单的方法就是这样做:

代码语言:javascript
复制
$(document).ready(function() {
   $("body").html(
       $("body").html().replace(/&reg;/gi, '<sup>&reg;</sup>').replace(/®/gi, '<sup>&reg;</sup>').replace('<sup><sup>','<sup>').replace('</sup></sup>','</sup>');
   );
});
票数 0
EN

Stack Overflow用户

发布于 2014-11-24 23:54:56

添加更多的替换

代码语言:javascript
复制
$("body").html().replace(/&reg;/gi, '<sup>&reg;</sup>').replace(/®/gi, '<sup>&reg;</sup>').replace('<sup><sup>', '<sup>').replace('</sup></sup>', '</sup>')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27116372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档