繁体   English   中英

JS中字符串中的增量数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM