2016-04-05 5 views
0

У меня есть вход, как это:рег, чтобы найти и заменить номер внутри []

<input type="hidden" value="0.0" name ="sale[sales_details_attributes][1][tax]"> 

, и я хочу, чтобы увеличить [1] [2] (я буду не знаю, если есть 1 или 2 или любой другой, это только для примера) внутри имени атрибута, это может быть сделано с помощью выражения регулярных выражений, но я не могу заставить его работать я попытался это:

var name = $(this).attr("name").replace("[?(\d+)?\]", "[2]"); 

есть способ, чтобы получить 1 и сделать приращение на 1 с помощью регулярного выражения?

+0

Это просто сделать только с '[1]' - но вы просите решение, которое позволяет увеличивать _любой_ номер? –

+0

Да, но на самом деле я не знаю, какой номер внутри [], это было только объяснение, я отредактировал мой вопрос, извините. –

+1

['/\[\d+\]/'](https://regex101.com/r/sZ3qQ5/1)? – Shafizadeh

ответ

2

Лучший способ сделать это - извлечь номер в виде строки, преобразовать его в число, а затем использовать toString() в сочетании с replace.

var input_string = "sale[sales_details_attributes][3434][tax]"; 
var number = Number(input_string.match(/(\d+)/)[0]); 
input_string.replace(number.toString(), (number+1).toString()) 

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

+0

да, но на самом деле я не знаю, какой номер внутри [], это было только объяснение, я отредактировал мой вопрос, извините. –

+0

@ JoseMiguelLedón Обновлен для удовлетворения новой проблемы. –

0

Использование String.replace(). ссылка: MDN

var name = "sale[sales_details_attributes][123][tax]"; 
 
var str = name.replace(/\[(\d+)\]/,function(match, p1){ 
 
    return "[" + (parseInt(p1,10) + 1) + "]"; 
 
}); 
 
alert(str);

+0

приятно, это то, что я искал, спасибо. –

+0

@ JoseMiguelLedón, если ответ работает на вас, пожалуйста, примите ответ, чтобы другие пользователи могли его легко увидеть. благодаря! –

0
var name = $(this).attr("name"); 
var num = 1 + (1*name.replace(/.*\[(\d+)\].*/, "$1")); 
$(this).attr("name",name.replace(/\[(\d+)\]/, "["+num+"]")); 
Смежные вопросы