[英]How to Replace String having Substring of Unlimited Characters?
我正在嘗試替換字符串
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
我究竟做錯了什么?
嘗試這個:
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");
正則表達式[\\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”字符串。
當您可以簡單地連接字符串時,是否有使用繁瑣的替換操作的原因? 如果沒有,我建議這樣做:
var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.substring(url.lastIndexOf('/')+1,-1)+"btn_close_black.gif"
它所做的只是找到最后一個斜杠並刪除所有后續字符,因此您可以輕松地附加文件名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.