我有一个如下所示的网址:
<a href="http://url/images/1034749-184e-3467-87e0-d7546df59896?w=600&r=22036"></a>
我想替换:1034749-184e-3467-87e0-d7546df59896
用另一个 ID,是否有任何正则表达式或类似的替换方法可以让我使用 JavaScript 在“ image/
”和“ ?
”字符之间替换 ID?
我有一个如下所示的网址:
<a href="http://url/images/1034749-184e-3467-87e0-d7546df59896?w=600&r=22036"></a>
我想替换:1034749-184e-3467-87e0-d7546df59896
用另一个 ID,是否有任何正则表达式或类似的替换方法可以让我使用 JavaScript 在“ image/
”和“ ?
”字符之间替换 ID?
你可以做这个近似表达式:
/[0-9a-z]+(?:-[0-9a-z]+){4}/i
匹配一堆十六进制,然后是 4 个部分,每个部分以破折号开头,后跟一堆十六进制。
> var s = 'http://url/images/1034749-184e-3467-87e0-d7546df59896?w=600&r=22036';
> console.log(s.replace(/[0-9a-z]+(?:-[0-9a-z]+){4}/i, 'something-else'));
http://url/images/something-else?w=600&r=22036
/images\/[^?]+/
会匹配,但它也会替换images/
。
幸运的是,您可以将回调传递给.replace
:
url.replace(/(images\/)[^?]+/, function($match, $1) {
// results in "images/<some-ID>"
return $1 + theNewId;
});
如果你有对 DOM 元素的引用,你也可以只替换路径的最后一步:
element.pathname =
element.pathname.substring(0, element.pathname.lastIndexOf('/') + 1) + newId;
是的,只需这样做:
var url = document.getElementById("yoururlid").src;
url = url.split("/");
var newUrl = url[0] + url[1] + url[2] + url[3] + newURLID;
为什么不这样做:
document.getElementById("yoururlid").src="http://url/images/" + newId + "?w=600&r=22036";