2013-05-08 3 views
-1

Мой вопрос связан только с регулярными выражениями JavaScript.JavaScript - Регулярное выражение для преобразования источника изображения

Я строю простой лайтбокс для Wordpress с помощью Mootools JavaScript framework.

Wordpress хранит фотографии в различных размеров с именами файлов, как:

'image-50-50x100.jpg' 
'image-50-150x100.jpg' 
'image-50-1024x698.jpg' 
'image-50.jpg' 

Когда пользователь нажимает на уменьшенное изображение, я должен преобразовать источник этого образа в источник полного размера изображения, и затем предварительно загрузите полноразмерное изображение.

Вопрос

Как изменить строку, как это:

'http://some-path/image-50-50x100.jpg' 
'http://some-path/image-50-150x100.jpg' 
'http://some-path/image-50-1024x698.jpg' 
'http://some-path/image-50.jpg' 

, в:

'http://some-path/image-50.jpg' 

Недостающую часть является точным регулярное выражение в коде ниже:

source.replace(/regular-expression/, ''); 

Заранее спасибо.

+2

Итак ... читайте на регулярных выражениях. :-) (Хотя это им не нужно, их использование, вероятно, будет более чистым решением.) Что вы на самом деле * пробовали *? –

+0

Также это не обязательно требует регулярных выражений. Подстроки могли бы тоже ... Я препятствую использованию регулярных выражений для простых случаев, подобных этому, поскольку на самом деле им требуется больше работы, которая должна выполняться за кулисами. (Нет ссылки для этого сейчас, но если вы этого хотите, я могу найти один ...) – Kiruse

ответ

3

Это следует сделать это:

str = str.replace(/-\d+x\d+/, ''); 

Eg:

var str = 'http://some-path/image-50-1024x698.jpg'; 
str = str.replace(/-\d+x\d+/, ''); 
console.log(str); // "http://some-path/image-50.jpg" 

И в случае, когда вы не хотите, чтобы это изменить, это Безразлично t:

var str = 'http://some-path/image-50.jpg'; 
str = str.replace(/-\d+x\d+/, ''); 
console.log(str); // "http://some-path/image-50.jpg" 

Edit: Вы сказали, что в другом месте, что комментарий:

В некоторых редких случаях это может случиться, что Wordpress загрузки пользовательских изображений, как image-1024x698.jpg, то Wordpress создает большой палец изображение как image-1024x698-300x300.jpg

Итак, мы добавим \. и . к вышесказанному:

var str = 'http://some-path/image-1024x698-300x300.jpg'; 
str = str.replace(/-\d+x\d+\./, '.'); 
console.log(str); // "http://some-path/image-1024x698.jpg" 
+1

коснуться сэр, коснуться. –

+0

@ RyanLynch: LOL :-) –

+0

Также отлично работает, спасибо за ответ. – Danijel

1

Try:

source.replace(/(.+\/[^-]+-[^-]+)(-\d+x\d+)*\.([^\.]+)$/, '$1.$3') 
+0

Отлично, намного лучше, чем мое регулярное выражение, спасибо – Danijel

+0

Подождите ... это не работает для '' http: // some-path/image-50.jpg'' –

+0

Несомненно, это намного сложнее, чем требуется. –

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