替换javascript中的多个字符串实例

替换javascript中的多个字符串实例,javascript,Javascript,字符串内容: background:url(abcd.gif); background:url(images/header2.gif) no-repeat; background:url(images/bullet1.gif) no-repeat 11px 13px; Javascript代码: var testRE = originalcode.match("url\(\(.*)\)"); testRE = testRE[2].replace('(',''); testRE = test

字符串内容:

background:url(abcd.gif); background:url(images/header2.gif) no-repeat;
background:url(images/bullet1.gif) no-repeat 11px 13px;
Javascript代码:

var testRE = originalcode.match("url\(\(.*)\)"); 
testRE = testRE[2].replace('(',''); 
testRE = testRE.split(')')[0]; 
var img_path = "http://xyz.com/800002418/"+testRE; 
originalcode = originalcode.replace(testRE,img_path);

在上面的代码中,它只替换匹配的第一个实例。我正在尝试替换字符串中url的多个实例,如上所述,url的字符串中有3个实例。但它只是将第一个实例,即“abcd.gif”替换为“”。剩下的就这么定了。

我怀疑您在这里实际要做的是:

originalcode = originalcode.replace(/url\(([^\)]*)\)/g, "url(http://xyz.com/800002418/$1)");

请参阅@Phylogenesis的答案,了解如何做您似乎认为自己想做的事情,但这是您真正想做的吗?修改字符串后,将如何处理它?我想您可能会将其设置为某个元素上的字符串CSS值,如
elt.cssText=
中所示。但是为什么您认为一行中的三个
background
属性会起到任何有用的作用呢?每一个都将覆盖上一个

退一步说,我建议操作单个属性值,而不是尝试使用regexp将CSS声明作为字符串进行操作。比如

foo.style.backgroundImage=foo.style.backgroundImage
    .replace(/\(.*)\)/,"http://..."+$1);

但我还是不明白你为什么要这么做。我猜这是因为远程URL只有在运行时才知道?最灵活的解决方案是将CSS文件放置在相关主机上并加载它。如果图像在那里,您应该能够安排将CSS文件与它们一起放在那里。
background
属性值中的URL引用将自动根据CSS文件的URL进行解释,而无需以这种难看的方式进行重写。

是否尝试将本地路径替换为完整路径,例如images/something.png to?是,但是css代码被视为单个字符串。请查看
g
标志。但真的,你到底想在这里做什么?我有一些字符串形式的css代码。现在我只想用新路径替换每个背景url路径。非常感谢,它正在运行。嘿,我正在尝试替换,比如originalcode=originalcode.replace(/url([^)]*)/g,“url(/800002418/$1)”;意思是代替“如果我放了”,那么它会像“替换”。这意味着创建开始和结束标记。如何将输出与“”保持一致。