我正在尝试替换字符串
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
我做错了什么?
答案 0 :(得分: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”字符串。
答案 1 :(得分:0)
当您可以简单地连接字符串时,是否有理由使用相当繁琐的替换操作?如果没有,我建议:
var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.substring(url.lastIndexOf('/')+1,-1)+"btn_close_black.gif"
所有这一切都是找到最后一个斜线删除所有后续字符,这样你就可以轻松附加你的文件名。