替换两个标记之间的URL中的ID

时间:2013-02-22 15:08:43

标签: javascript jquery regex

我有一个看起来像这样的网址:

<a href="http://url/images/1034749-184e-3467-87e0-d7546df59896?w=600&amp;r=22036"></a>

我想将1034749-184e-3467-87e0-d7546df59896替换为另一个ID,是否有任何正则表达式或类似的替换方法,这样我就可以在“image/”和“{{1}之间使用JavaScript替换ID ''人物?

3 个答案:

答案 0 :(得分:3)

你可以做出这个近似表达式:

/[0-9a-z]+(?:-[0-9a-z]+){4}/i

匹配一堆十六进制数,然后是4个部分,每个部分以一个破折号开头,后跟一堆十六进制数。

> var s = 'http://url/images/1034749-184e-3467-87e0-d7546df59896?w=600&amp;r=22036';
> console.log(s.replace(/[0-9a-z]+(?:-[0-9a-z]+){4}/i, 'something-else'));

http://url/images/something-else?w=600&amp;r=22036

答案 1 :(得分:2)

/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;

答案 2 :(得分:0)

是的,就这样做:

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&amp;r=22036";