Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换多行上字符串的所有实例_Javascript_Regex - Fatal编程技术网

Javascript 替换多行上字符串的所有实例

Javascript 替换多行上字符串的所有实例,javascript,regex,Javascript,Regex,我有一个像这样的文件 1234567:abcdefg:X 1234567:abcdefg:X 1234567:abcdefg:X 1234567:abcdefg:X 我需要将每行(X)上的结束字符替换为0。这看起来很简单,但每次我使用regex时,它要么为null,要么为regex。replace不是一个函数。 目前我已经回答了正则表达式的/.*:(.*)/gAsadiga。我添加了两个示例(基于adigas的出色回答/评论) const subject=`1234567:abcdefg:

我有一个像这样的文件

1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X

我需要将每行(X)上的结束字符替换为0。这看起来很简单,但每次我使用regex时,它要么为null,要么为
regex。replace
不是一个函数。
目前我已经回答了正则表达式的
/.*:(.*)/g
Asadiga。我添加了两个示例(基于adigas的出色回答/评论)

const subject=`1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X`;
//正则表达式文字
const resultWithLiteral=subject.replace(/.$/gm,'0');
//正则表达式构造函数
常量表达式=新的RegExp(/.$/gm);
const resultWithConstructor=subject.replace(表达式“0”);
函数renderResults(){
const outputElements=document.querySelectorAll('pre');
outputElements[0]。innerText=resultWithLiteral;
outputElements[1]。innerText=resultWithConstructor;
};

结果为文本
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
结果为文本
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X

单击以替换
您可以将格式与冒号进行匹配,但最后一个字符除外,使用的是否定字符类和捕获组

  • ^
    字符串的开头
  • 捕获组1
    • [^::+:[^::::+:
      匹配两次非
      ,然后匹配:使用
  • 关闭组
  • \S
    匹配非空白字符
  • $
    字符串结尾

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

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

const regex=/^([^::+:[^:::+:)\S$/gm;
常量str=`1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X
1234567:abcdefg:X`;
常量subst=`10`;
const result=str.replace(regex,subst);
控制台日志(结果)
str.replace(/.$/gm,'0')
^([^:]+:[^:]+:)\S$