首页 > 解决方案 > 在多行上替换字符串的所有实例

问题描述

我有一个看起来像这样的文件 1234567:abcdefg:X 1234567:abcdefg:X 1234567:abcdefg:X 1234567:abcdefg:X

我需要将每行(X)上的结束字符替换为 0。这看起来很简单,但每次我使用正则表达式时它要么为空,要么regex.replace不是函数。目前我有/.*:.*:(.*)/g正则表达式

标签: javascriptregex

解决方案


除了使用否定字符类和捕获组的最后一个字符之外,您可以将格式与冒号匹配。

^([^:]+:[^:]+:)\S$
  • ^字符串的开始
  • (捕获组 1
  • )关闭组
  • \S匹配非空白字符
  • $字符串结束

正则表达式演示

在替换中,使用捕获组 1 后跟 0

如果最后一个字符不能是冒号,请使用[^\s:]代替\S

const regex = /^([^:]+:[^:]+:)\S$/gm;
const str = `1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X`;
const subst = `$10`;
const result = str.replace(regex, subst);

console.log(result);


推荐阅读