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

IT技术 javascript html regex
2021-02-15 19:26:02

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

我的方法是获取\d/restofstring,++匹配项,然后将 number 与 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); 
4个回答

怎么样:

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

在那里我们搜索字符串末尾的数字,将其强制转换为 ,将其Number增加 1,然后将其放回字符串中。我认为这与您在问题中的措辞相同。

参考:

很好的答案,但我看不到我们“将其转换为数字”的部分
2021-04-17 19:26:02
谢谢,我用我用你的例子做的解决方案更新了这个问题
2021-04-28 19:26:02
这是一个漂亮的解决方案。
2021-05-08 19:26:02
这是一个稍微修改过的版本,适用于字符串中的所有数字: "url5part6".replace(/\d+/g, function(n){ return ++n }); //returns "url6part7"
2021-05-15 19:26:02

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

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

将变量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; });
});

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

如果你仔细阅读这个问题,提问者并没有具体说明他到底想改变什么;甚至数字不会出现URL的末尾——他只是在他的例子中使用了它。我认为更改 GET 参数可能是一个用例。
2021-04-18 19:26:02
“输入元素的名称”= <input name="url1">
2021-05-07 19:26:02
嗯,问题不是关于获取参数?
2021-05-15 19:26:02

看起来不错。您可能想要使用像 的正则表达式^(.*?)(\d+)$,确保您抓取的数字位于字符串的末尾。

您可以使用replace并传递一个函数来替换匹配的部分:

str.replace(/\d+/, function(number) { return parseInt(number, 10) + 1; });