2014-11-05 70 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