【问题标题】:search and replace text inside html of div in javascript but not text inside tag在javascript中搜索和替换div的html内的文本,而不是标签内的文本
【发布时间】:2014-05-07 11:34:18
【问题描述】:

我有一些 HTML 结构,我想在那个 HTML 结构中搜索特定的文本。 看下面的例子

<h1>Try to span some text on this page</h1>
    <div>
        span is a <span>paragraph</span>.</div>
    <p class="span ddd">This 123is a paragraph.1</p>

<div class="span ddd">This is some span in a div element.</div>

现在,如果我要搜索“span”文本,那么“span”字应该用 div 标签包裹。 但只有文本中的“span”词,而不是类或其他标签。

我想要这样的输出(使用 div 或 span 换行)

<h1>Try to <span class="search">span</span> some text on this page</h1> <div> <span class="search">span</span> is a <span>paragraph</span>.</div> <p class="span ddd">This 123is a paragraph.1</p> <div class="span ddd">This is some <span class="search">span</span> in a div element.</div>

【问题讨论】:

  • 请输出样例,有习惯附上主要问题
  • 搜索变量来自输入还是您想自己做?发布您尝试过的代码将有助于回答。
  • only "span" word in text,你什么意思,有元素包裹着一切?
  • 我想要这样的输出(使用 div 或 span 换行)

    尝试在此页面上 span 一些文本

    span 是一个段落

    这123是一个段落。1

    这是一个 div 元素中的一些 span
  • 请将示例输出放在问题中,而不是在评论中。

标签: javascript html regex


【解决方案1】:
<div id="wrapper"> 
    <h1>Try to span some text on this page</h1>
  <div>
    span is a <span>paragraph</span>.
  </div>
    <p class="span ddd">This 123is a paragraph.1</p>

    <div class="span ddd">This is some span in a div element.</div>
</div>

我已经修改了你的 html,用一个包装器封装了我的选择器。但是你可以使用自己的选择器。

$(document).ready(function(){
   var str=$('#wrapper').html();
   $('#wrapper').html(str.replace( new RegExp(" span ","g"),"<div>span</div>"));
});

此代码将满足您的需求。 这是jsffiddle

如果您的问题已解决,请不要忘记将其标记为已解决。谢谢。

【讨论】:

  • 感谢它的帮助,但我对这个例子还有一个问题是,我还想搜索像“xyzspanlmn”这样的跨度

    尝试在这个页面上选择一些文本

    h_span_h 是一个段落

    这123是一个段落。1

    这是一个div元素中的一些文本。
    div>
【解决方案2】:

我不太确定这是否是您想要的。但是这样的事情应该可以工作

$(function() {
    var found = $('div:contains("span")');
});

这是一个小提琴 http://jsfiddle.net/z7ckK/

如果你使用*:contains,它会在 HTML 中搜索它。

更新: 最初错过了更换零件。我有一个解决方案,但为此您需要在搜索元素上添加一个包装元素。请检查我的小提琴。你会明白的。 http://jsfiddle.net/z7ckK/3/

【讨论】:

  • op 想要搜索写在文本中的spans 并替换为&lt;div&gt;span&lt;/div&gt;
【解决方案3】:

你可以试试这个正则表达式:(?&lt;!&lt;[^&gt;])${searchWord}(?&lt;![^&gt;]&lt;)

let innerHTML = document.body.innerHTML
let searchWord = 'span'
let regex = new RegEx(`(?<!<[^>])${searchWord}(?<![^>]<)`,gi)

innerHTML.replace(regex, (x)=> {
return `<div>x</div>`;
});

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2014-08-13
    • 2015-11-04
    相关资源
    最近更新 更多