Javascript / Regex替换文本而不替换代码/标记属性等

时间:2016-04-17 05:16:05

标签: javascript regex

编辑**这不是重复的标记为

编辑**我问是否有正则表达式解决方案,可以轻松实现到我当前的代码中,而不是重新工作

我有像

这样的对象
finalList = {bla: 100, foo: 200, baz: 300} 

尝试制作一个脚本,用我在当前网站上查看的数组中的相应值替换单词。我的问题是,它还替换了HTML代码中匹配的单词,如img标签等

<div> 
    <p class="baz">bla foo words</p>
    <a href="/img/Hello_World_bla.png">
        <img src="/img/Hello_World_bla.png">
    </a>
</div>

如果我们使用上面的例子作为我们的当前页面&#34;我希望在运行脚本后能够:

<div> 
    <p class="baz">100 200 words</p>
    <a href="/img/Hello_World_bla.png">
        <img src="/img/Hello_World_bla.png">
    </a>
</div>
我真正得到的是:

<div> 
    <p class="300">100 200 words</p>
    <a href="/img/Hello_World_100.png">
        <img src="/img/Hello_World_100.png">
    </a>
</div>

正如您所看到的,这导致了一个问题,因为它破坏了页面中的元素。

这是我目前正在使用的代码部分,它提供了不良结果:

var a = finalList;

for (var i = 0; i < a.length; i++) {
    // use a for loop to loop through the array
    // now grab each item:
    var item = a[i];
    // grab the text:
    var text = item.text;
    var frequency = item.frequency;

    var re = new RegExp(text,'gi');        
    replaced = $("body").html().replace(re, frequency);
    $("body").html(replaced);
    console.log(text, " replaced with: ", frequency);
}

0 个答案:

没有答案