Javascript:如何替换字符串的内容而不是HTML标记中的内容?

时间:2010-04-28 08:59:14

标签: javascript replace indexing

我想编写一个Javascript函数来更改字符串中的 Lasvegas 文本: 例如:

  

你好Lasvegas中的每一个人,来和我一起

如何更改文字“Lasvegas”,但不能更改HTML标记中的 Lasvegas 内容?

2 个答案:

答案 0 :(得分:1)

可能是那样的

str.replace(/Lasvegas[^<]/,'123')

答案 1 :(得分:0)

编辑:忘记JavaScript支持否定前瞻:

"Hello every one in Lasvegas, come <a href='xxx'>Lasvegas</a> with me"
    .replace(/(Lasvegas(?!<))/g, "World");

返回:

  

大家好,欢迎来到世界各地,&lt; a href ='xxx'&gt; Lasvegas&lt; / a&gt;和我一起

<小时/> 离开,所以每个人都可以看到我的第一个答案是多么无意义; - )

如果“Lasvegas”不在字符串的末尾,那么Alexey的答案就会奏效。我不确定是否有更好的方法,但您可以使用replacer函数来断言文本是否在标记内:

var str = "Hello every one in Lasvegas, come <a href='xxx'>Lasvegas</a> with me";
var out = str.replace(
            /(>?Lasvegas<?)/g,
            function ($0) 
            { 
                if ($0.slice(0,1) == ">") 
                    return $0; 
                else
                    return "World";
            }
);

out的内容:

  

大家好,欢迎来到世界各地,&lt; a href ='xxx'&gt; Lasvegas&lt; / a&gt;和我一起