Есть плагин для клонирования полей формы, в котором индекс в атрибуте name прирастает при каждом клонировании, т.е. name типа meta[go][0] в добавленном поле становится meta[go][1].
Но проблема в том, что сейчас прирастают все числовые значения, и во вложенном добавленном поле атрибут name вместо meta[go][0][to][1] становится meta[go][1][to][1].
Для инкремента используется такой метод:
var old_val = $(this).attr("name");
var new_val = old_val.replace(/-?\d+/g, function (n) { return ++n; });
$(this).attr("name", new_val);
Как в данном случае сделать так, чтобы прирастало значение только последнего индекса?
Найдите последнее вхождение целого числа с помощью /-?\d+(?![^]*\d)/
:
var old_val = "meta[go][0][to][0]"; // $(this).attr("name");
var new_val = old_val.replace(/-?\d+(?![^]*\d)/, function (n) { return ++n; });
console.log(new_val); //$(this).attr("name", new_val);
См. пример работы регулярного выражения
Подробности
-?
- необязательный "минус" (дефис)\d+
- 1+ цифр(?![^]*\d)
- блок просмотра вперёд, который отменяет совпадение, если сразу после текущей позиции имеется 0 и более любых символов ([^]*
, можно использовать .*
, если нет символов перехода на новую строку) и затем любая цифра.Цепляйте последнюю цифру в слове
/-?\d+(?=][^\[]?)/g,
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть select, который используется с плагином select2И мне надо использовать свои атрибуты
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Не работают кнопки owl-prev owl-next owl-dotsУ меня подключён jQuery 2