xDMITRIYx
@xDMITRIYx

Что не так с регулярным выражением?

Есть функция, а в ней регулярное выражеие:
function praseAnswerFC(answerSplit){
	var arrayAnswerFc = [];
	for (let i = 0; i < answerSplit.length; i++){
		var reg = /^(img.+)(\d\d_)(.*)([(\.jpg)(\.jpeg)(\.png)])$/i;
		var nameFood = answerSplit[i].replace(reg, '$3');
		arrayAnswerFc[i] = nameFood;
	}
	return arrayAnswerFc;
}

на входе массив:
img/04_slider_food/1_fast_food//01_Chicken Burger.jpg
img/04_slider_food/1_fast_food//02_Chicken Pizza.jpg
img/04_slider_food/1_fast_food//03_Beef Burger.jpg
....
img/04_slider_food/1_fast_food//07_Rolls.jpg
img/04_slider_food/1_fast_food//08_Wendy’s Dave’s Hot ‘N Juicy.jpeg

а на выходе массив:
Chicken Burger.jp
Chicken Pizza.jp
Beef Burger.jp
...
Rolls.jp
Wendy’s Dave’s Hot ‘N Juicy.jpe

Вопрос - почему он отсекает в начале как задумано, а в конце только последнюю букву, а не расширение полностью?..где ошибка и как исправить?
P.S. ...наверно я неясно выразился - мне нужно, чтобы отбросило префикс и расширение полностью, т.е. на выходе нужно:
Chicken Pizza
Beef Burger
..
Wendy’s Dave’s Hot ‘N Juicy
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@BorisKorobkov
Web developer
/^(img.+)(\d\d_)(.*)\.(jpg|jpeg|png)$/i

А еще лучше:
var reg = /([^\/]+)\.(jpg|jpeg|png)$/i;
var matches = answerSplit[i].match(reg);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dummyman
@dummyman
диссидент-схизматик
Эх вы, регулярщики-кулибины
var arr = [
    'img/04_slider_food/1_fast_food//01_Chicken Burger.jpg',
    'img/04_slider_food/1_fast_food//02_Chicken Pizza.jpg',
    'img/04_slider_food/1_fast_food//03_Beef Burger.jpg',
    'img/04_slider_food/1_fast_food//07_Rolls.jpg',
    'img/04_slider_food/1_fast_food//08_Wendy’s Dave’s Hot ‘N Juicy.jpeg'
];

var res = arr.map(uri => uri.replace(/^([\w\d\s_]*\/)+\d{2}_/,''));

console.log(JSON.stringify(res, null, 4));

Вывод:
[
    "Chicken Burger.jpg",
    "Chicken Pizza.jpg",
    "Beef Burger.jpg",
    "Rolls.jpg",
    "Wendy’s Dave’s Hot ‘N Juicy.jpeg"
]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы