0

我正在尝试替换字符串

var url = "www.fnord.com/foo/bar/btn_close_white.gif";

简单的逐字逐字替换效果很好:

var newUrl = url.replace(/btn_close_white.gif/g,"btn_close_black.gif");

然而,由于我不知道当前设置了什么颜色,我需要正则表达式来忽略颜色部分并替换整个段。所以理论上,btn_close_pink.gif还是btn_close_someOtherFancyColor.gif全部换成btn_close_black.gif.

我试过这个,但它失败了,我不知道为什么:

var newUrl = url.replace(/btn_close_*.gif/g,"btn_close_black.gif"); // this fails

我究竟做错了什么?

4

2 回答 2

1

试试这个:

var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.replace(/btn_close_[\w\d]*\.gif/g,"btn_close_black.gif");

Regexp[\w\d]*表示任意数量的字母或数字。如果您允许 url 中的任何字符,请执行以下操作:

var newUrl = url.replace(/btn_close_.*\.gif/g,"btn_close_black.gif");

编辑:当您编写"/btn_close_*\.gif/"正则表达式时,这意味着您的字符串应包含“btn_close”字符串+任意数量的“_”字符+“.gif”字符串。

当您编写"/btn_close_.*\.gif/"正则表达式时,这意味着您的字符串应包含“btn_close”字符串+任意数量的任何字符+“.gif”字符串。

于 2012-10-15T13:23:53.207 回答
0

当您可以简单地连接字符串时,是否有理由使用相当繁琐的替换操作?如果没有,我建议这样做:

var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.substring(url.lastIndexOf('/')+1,-1)+"btn_close_black.gif"

它所做的只是找到最后一个斜杠并删除所有后续字符,因此您可以轻松附加文件名。

于 2012-10-15T13:35:03.930 回答