Lasvegas</a> with me\"" />
开发者

Javascript: How can I replace the contents of a string but not in an HTML tag?

I want to write a Javascript function to change the text Lasvegas in string: example:

"Hello every one in Lasvegas, come to <a href='xxx'>Lasvegas</a> with me"

How can I change the text "Lasveg开发者_如何学Goas" but not change the content Lasvegas that is in an HTML tag?


May be something like that

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


EDIT: Forgot JavaScript supports negative lookaheads:

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

Returns:

Hello every one in World, come <a href='xxx'>Lasvegas</a> with me


Left in so everyone can see how pointless my first answer was ;-)

Alexey's answer would work if "Lasvegas" wasn't at the end of the string. I'm not sure if there's a better way, but you could use a replacer function to assert whether the text is inside a tag or not:

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";
            }
);

contents of out:

Hello every one in World, come <a href='xxx'>Lasvegas</a> with me

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜