使用正则表达式增加字符串中的数字

Jac*_*ask 11 html javascript regex

我得到一个输入元素的名称,这是一个带数字(url1)的字符串.我想以url2最简单,最快捷的方式将数字增加1().

我的方法是获取\d/ restofstring,++匹配,然后将数字与restofstring放在一起.有没有更好的办法?

更新:

我的最终(虚拟)代码变为:

var liNew = document.createElement('li'); 
liNew.innerHTML = liOld.innerHTML; 
var els = Y.Dom.getChildrenBy(liNew, function(el) { 
    return el.name.match(/\d+$/); 
} // YUI method where the function is a test 
for (var i = 0, el; el = els[i]; i++) { 
    el.name = el.name.replace(/\d+$/, function(n) { return ++n }); 
} 
list.appendChild(liNew); 
Run Code Online (Sandbox Code Playgroud)

Roa*_*rth 35

怎么样:

'url1'.replace(/\d+$/, function(n){ return ++n }); // "url2"
'url54'.replace(/\d+$/, function(n){ return ++n }); // "url55"
Run Code Online (Sandbox Code Playgroud)

我们在字符串的末尾搜索一个数字,将其Number强制转换为1,然后将其放回字符串中.我认为你的问题甚至与你的问题相同.

参考:

  • 这是一个美丽的解决方案. (2认同)
  • 这是一个稍微修改过的版本,适用于字符串中的所有数字:`"url5part6".replace(/\d +/g,function(n){return ++ n}); //返回"url6part7"` (2认同)

int*_*tgr 7

简单.使用带正则表达式的替换函数:

s = 'abc99abc';
s = s.replace(/\d+/, function(val) { return parseInt(val)+1; });
Run Code Online (Sandbox Code Playgroud)

将变量s设置为:abc100abc

但是如果你想确保只更改URL中的某个参数,它会变得更复杂:

s = '?foo=10&bar=99';
s = s.replace(/[&?]bar=\d+/, function(attr) {
  return attr.replace(/\d+/, function(val) { return parseInt(val)+1; });
});
Run Code Online (Sandbox Code Playgroud)

将变量s设置为:?foo=10&bar=100