JavaScript字符串数字自增正则替换结果异常问题咨询
问题原因
String.replace()方法的替换函数返回值会直接替换整个正则表达式匹配到的全部内容,而非仅替换捕获组匹配的部分:
- 你的正则
/sor\s*(\d+)\.\s*szék/匹配到的完整内容是sor 1. szék - 你在替换函数中仅返回了捕获组计算后的结果
2,相当于把整段匹配内容直接替换成2,最终原始字符串剩余的1.加替换结果2,就得到了错误输出1. 2
修复方案
你可以把匹配内容的前后固定部分也保留,和自增后的数字拼接后再返回,参考写法:
name.replace(/(sor\s*)(\d+)(\.\s*szék)/, function (_, prefix, num, suffix) { return prefix + (Number(num) + 1) + suffix; });
也可以直接手动拼接固定前缀后缀:
name.replace(/sor\s*(\d+)\.\s*szék/, function (_, num) { return "sor " + (Number(num) + 1) + ". szék"; });
内容的提问来源于stack exchange,提问作者János
相关产品推荐
相关产品推荐

