javascript正则表达式替换路径字符串中的3digitis

javascript regular expression replace 3digitis from path string

本文关键字:3digitis 字符串 路径 正则表达式 替换 javascript      更新时间:2023-09-26

我有一个<img>,需要更改路径中的两位数字。我不知道如何写正则表达式。

<img src="/cms/ig/immopix/100/9165c73366c8830058b0f95c0fcacef5_100.jpg" />
                          ^                                    ^ 
                          |                                    |
                           ------------------------------------
                                               |
                                   replace those "1" in "6" 
                                   so it looks like this
                            ------------------------------------
                           |                                    |
 <img src="/cms/ig/immopix/600/9165c73366c8830058b0f95c0fcacef5_600.jpg" />

img名称是一个md5值,它也可以包含"100",所以我不能只替换每个"100"。我该怎么做?

因此,DOM中有一些img标记,我像这样循环

$('.object-overview-wrap').each(function(i){
    var img = $(this).children('.img-wrap').children('img');
    console.log(img.attr('src'));
    var imgSrc = img.attr('src');
    img.attr('src', '/cms/ig/immopix/600/88f9f658ed1d506ce36b28565b79405f_600.jpg');
        });

console.log给了我:/cms/ig/inmopix/100/9165c73366c8830058b0f95c0fcachef5_100.jpg,我想替换它,但我不知道怎么替换。

非常感谢解释如何编写和使用正则表达式的帮助和链接!

您可以用"/600/"替换"/100/",然后用"_600."替换"_100."

Regexes当然可以在这里工作,但这样更简单。

这应该适用于您的案例:

var s='<img src="/cms/ig/immopix/100/9165c73366c8830058b0f95c0fcacef5_100.jpg" />';
var r = s.replace(/100'b/g, "600");
//=> <img src="/cms/ig/immopix/600/9165c73366c8830058b0f95c0fcacef5_600.jpg" />

或者更严格:

var r = s.replace(/([/_])100'b/g, "$1600");
//=> <img src="/cms/ig/immopix/600/9165c73366c8830058b0f95c0fcacef5_600.jpg" />

我的方法是:避免正则表达式。也许使用这个:

var mystring = srcString.split('/');
mystring[4]=600;
mystring[5] = mystring[5].split('_')[0] + '_' + '600.jpg';
mystring.join('/');

或者类似的。使用splitjoin很有趣。但是一个简单的替换在这里也起作用