You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则替换数字后特殊字符为点时数字也被替换的问题如何解决

问题原因

你当前使用的正则/\d+(.)/g的完整匹配内容为「连续数字 + 数字后的第一个任意字符」,replace方法默认会将全部匹配到的内容替换为指定值,因此数字也会被连带替换为.,不符合预期。

修正方案

方案1:捕获组保留数字(兼容性最好)

将连续数字部分也加入捕获组,替换时通过$1引用捕获到的数字内容,仅将后续字符替换为.:

const time = "17:34:12:p. m.";
const output = time.replace(/(\d+)(.)/g, '$1.');
// 预期输出 "17.34.12.p. m."
console.log(output);

方案2:正向后行断言(写法更简洁)

使用零宽正向后行断言匹配「数字之后的字符」,此时正则仅匹配数字后的任意字符,不会将数字纳入匹配结果,直接替换即可:

const time = "17:34:12:p. m.";
const output = time.replace(/(?<=\d+)./g, '.');
// 预期输出 "17.34.12.p. m."
console.log(output);

注:正向后行断言为ES2018新增特性,目前所有主流现代浏览器、Node.js 10+版本均已支持。

内容的提问来源于stack exchange,提问作者user12023283

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:00