2011-01-28 3 views
1

Можно ли воспроизвести это с помощью javascript?replicate preg заменить на javascript

preg_replace('/(.gif|.jpg|.png)/', '_thumb$1', $f['logo']); 

EDIT - я не получаю эту следующую ошибку для этого peice кода,

незавершенная строка

$('#feed').prepend('<div class="feed-item"><img src="'+html.logo.replace(/(.gif|.jpg|.png)/g, "_thumb$1")+'"/> <div class="content">'+html.content+'</div></div>').fadeIn('slow');

+3

Репликация означает, что вы хотите получить те же ошибки, что и исходный код? –

+2

@Mark: Я только собирался сказать ... как насчет их '.'? –

+0

Чтобы быть строго правильным, вы должны использовать '\ .jpe? G' в обоих. Короткий вариант «jpg» - это просто уступка эпохе DOS. – mario

ответ

0
somestringvar.replace(/(.gif|.jpg|.png)/, replacementValue) 
3

Да, за исключением того, что в JavaScript, replace - метод строки, поэтому было бы переставить немного (также, массив/объект обозначения немного отличается):

f.logo.replace(/\.(gif|jpg|png)/, '_thumb.$1'); 

more info

+1

@nikic Когда бы имя файла изображения включало период и расширение более одного раза? – sdleihssirhc

+0

@sdleihssirhc: Проклятые, вы, очевидно, правы. Я всегда ошибаюсь, забывая этот модификатор, и теперь я вижу эту ошибку, даже если это не ошибка ... +1 для указания. – NikiC

+0

Не совсем невозможно, чтобы имя файла содержало два расширения. Да, это будет запаздывать. Но это технически разрешено, и схемы согласования HTTP-содержимого действительно могут использовать избыточный 'img0011.pnga.en.png'. Таким образом, я бы также избежал привязки '$', но добавлял '\ b'. – mario

6

Есть несколько проблем, с кодом, который вы пытаетесь воспроизвести:

  • Он соответствует «расширениям», даже если они не находятся в конце имени файла.
  • Точка в регулярном выражении соответствует (почти *) любому символу, а не только периоду.

Попробуйте вместо этого:

'abc.jpg'.replace(/\.(jpg|gif|png)$/, '_thumbs$&') 

Я предполагаю, что строка, которую вы пытаетесь заменить содержит только одно имя файла.


* См. Документацию по PCRE_DOTALL.

+1

Было бы неплохо, если бы вы сбросили внешнюю группу захвата и использовали '$ &'. +1 – NikiC

+0

@nikic: +1 Ницца, спасибо! Я полностью забыл, что вы можете сделать это в Javascript. :) –

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