2016-09-20 47 views
1

我正在使用以下正則表達式來替換w/4096/h/2048中的數字與自定義值。但現在我希望能夠後更換任何形式的四位w//hREGEX:如何替換前面加上「w /」和「h」的四位數字?

imgSrc.replace('w/4096/h/2048', 'w/' + w + '/h/' + h) 

我應該如何修改上面的代碼,以反映這一點?

+0

/(?:瓦特/)[0-9] {1,4}/ /(?:/ h)[0-9] {1,4}/ –

回答

2

使用[0-9]匹配一個數字,量詞{4}符合其中四:

imgSrc.replace('w/[0-9]{4}/h/[0-9]{4}', 'w/' + w + '/h/' + h) 

不如短手[0-9]您可以使用\d

imgSrc.replace('w/\d{4}/h/\d{4}', 'w/' + w + '/h/' + h) 
+0

謝謝,我編輯過。 – paddy

+2

JS引用的字符串中沒有定義JS正則表達式文字。應該是'/ w \/\ d {4} \/h \/\ d {4} /' – Phil

1

如果imgSrc = 「w/4096/h/2048」,並且您想用「abcd」替換「4096」,用「efgh」替換「2048」,請嘗試:

var imgSrc = "w/4096/h/2048"; 
imgSrc.replace(new RegExp('(w/)(\\d{4})(/h/)(\\d{4})'), '$1abcd$3efgh'); 

上述第二行返回以下結果:

w/abcd/h/efgh 
+0

當捕獲的零件是靜態的時候,沒有看到需要打擾捕獲組 – Phil

1

可以使用RegExp捕捉組/(\w\/)(\d+)(\/\w\/)(\d+)/

var str = "w/4096/h/2048"; 
 
var w = "123"; 
 
var h = "456" 
 
var res = str.replace(/(\w\/)(\d+)(\/\w\/)(\d+)/ 
 
         , "$1" + w + "$3" + h); 
 
console.log(res);

+0

這是唯一的答案迄今爲止工作。但在某些情況下重複數字:'http://vrcam-10065475.image.myqcloud.com/e9a5a32f17602d2242a8.jpg?imageView2/4096/w/2048/h/2048/q/100/format/jpg' – alex

+0

@alex對第一個捕獲組使用'(w \ /)',對第三個捕獲組使用'(\/\ h \ /)',var res = str.replace(/(w \ /)(\ d +)/\ h \ /)(\ d +)/ ,「$ 1」+ w +「$ 3」+ h);' – guest271314