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,然后将其放回字符串中.我认为你的问题甚至与你的问题相同.
参考:
String.prototype.replace - 可以采取正则表达式简单.使用带正则表达式的替换函数:
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
| 归档时间: |
|
| 查看次数: |
12618 次 |
| 最近记录: |