2016-09-20 2 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 не определены в цитируемых строках. Должно быть '/ w \/\ d {4} \/h \/\ d {4} /' – Phil

1

Если imgSrc = «w/4096/h/2048», и вы хотите заменить «4096» на «abcd» и «2048» на «efgh», попробуйте:

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 var = str.replace (/ (w \ /) (\ d +) (\/\ h \ /) (\ d +)/ , "$ 1" + w + "$ 3" + h); ' – guest271314

Смежные вопросы