[英]Increment number in string in JS
我有这个正则表达式,但它不符合我的预期:
name.replace(/sor\s*(\d+)\.\s*szék/, function () {
return arguments[1] * 1 + 1;
});
我的字符串是1. sor 1. szék
。 我希望回报1. sor 2. szék
但返回值是: 1. 2
. 为什么?
您得到值1. 2
作为模式sor\\s*(\\d+)\\.\\s*szék
与前导1.
不匹配,因此将保持不变。
部分arguments[1] * 1
是 1,然后将其加 1 得到 2。
如果要使用replace,可以使用3个捕获组并在replacement中使用,将group参数传递给replace的回调函数。
捕获的数字在第 2 组中,为了防止连接 2 个字符串,您可以在第 2 组之前添加一个+
。
let name = "1. sor 1. szék"; name = name.replace( /(sor\\s*)(\\d+)(\\.\\s*szék)/, (m, g1, g2, g3) => `${g1}${+g2+1}${g3}` ); console.log(name);
您可以简化常规表达式并仅用递增值替换第二次出现的数字。
const string = '1. sor 1. szék.', result = string.replace(/\\d+/g, (c => v => c-- ? v : +v + 1)(1)); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.