是从前往后查的,可以把正则的全局模式去掉实验下: const num='123456789' const str=num.replace(/(?=(\d{4})+$)/,',') console.log(str) // 1,23456789 /(?=(\d{4})+$)/g 匹配的位置是第1位(数字2的位置,后面有8个连续数字)和第5位(数字6的位置后面4个连续数字)。所以会在数字2和数字6的位置用逗号替换后面的数字,同时因为有前瞻断言不会消耗字符,相当于在2和6的位置插入了逗号。 