我有一个看起来像这样的文件1234567:abcdefg:X1234567:abcdefg:X1234567:abcdefg:X1234567:abcdefg:X
我需要将每行(X)的结束字符替换为0。这似乎很简单,但是每次我使用regex时,它都是null或regex.replace
不是函数。
目前我正则表达式有/.*:.*:(.*)/g
最佳答案
您可以使用否定的字符类和捕获组将格式与冒号匹配,但最后一个字符除外。
^([^:]+:[^:]+:)\S$
^
字符串开头(
捕获组1[^:]+:[^:]+:
匹配2次而不是:
,然后匹配:使用negated character class)
封闭组\S
匹配非空格字符$
字符串结尾Regex demo
在替换中,使用捕获组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);