2014-11-05 105 views
0

我有以下字符串:0-3-terms,我需要每次單擊一個按鈕時遞增3乘20,起始值也可能不總是3,但我將在此示例中使用它..遞增字符串中的數字

我設法做到這一點使用子字符串,但它是如此混亂,我寧願看看是否有可能使用正則表達式,但我與正則表達式不好。到目前爲止,我到了這裏,我想我會用這兩個連字符找到我需要增加的數字。

var str = '0-3-terms'; 
var patt = /0-[0-9]+-/; 
var match = str.match(patt)[0]; 

//output ["0-3-"] 

我怎麼能由20增加了3號和插回到海峽,所以我得到:

0-23-terms, 0-43-terms, 0-63-terms

回答

5

你正在做的替代品。所以使用.replace

var str = '0-3-terms'; 
var patt = /-(\d+)-/; 
var result = str.replace(patt,function(_,n) {return "-"+(+n+20)+"-";}); 
+0

學到了一些東西。沒有意識到JS可以使用正則表達式回調。 – sln 2014-11-05 19:44:20

1

另一種選擇是使用.split,而不是正則表達式,如果你喜歡。這將是這樣的:

var str = '0-3-terms'; 
 
var split = str.split('-'); 
 
split[1] = +split[1] + 20; 
 
var result = split.join('-'); 
 
alert(result);

0

我不明白,爲什麼你正在使用正則表達式。只需存儲該值並在按鈕被調用時創建字符串。

//first value 
var value = 3; 
var str = '0-3-terms'; 

//after clicking the button 
value = value+20; 
str = "0-" + value + "-terms" 
+0

使用正則表達式可以隨着每次點擊的增加而找到任意數量的數字。您的答案不會顯示您在下一個值增加到3之後如何獲得下一個值。 – Neil 2014-11-05 19:36:34

+0

每次單擊該按鈕時,都可以將變量「值」更新20。下一個值是更新的值。 – 2014-11-05 19:38:29

+0

對不起,我應該提到起始值可能不總是3,所以正則表達式會捕獲所有數字。 – Neil 2014-11-05 19:39:31