Javascript 替换为字符串不';我不能如愿工作

Javascript 替换为字符串不';我不能如愿工作,javascript,string,replace,Javascript,String,Replace,我编写了这个函数: 函数解决方案(输入、标记){ 让inputcopy=输入; 让regexstring=markers[0]+'.*(?=\\\\n'); 设regexp1=newregexp(regexstring,'gm'); 返回inputcopy.replace(regexp1,'a'); }; log(解决方案(“苹果、李子和香蕉”\n果穗\n果酱”[“%”、“!”])将\\\\n更改为\\n。它应该会起作用 function solution(input, markers) {

我编写了这个函数:

函数解决方案(输入、标记){
让inputcopy=输入;
让regexstring=markers[0]+'.*(?=\\\\n');
设regexp1=newregexp(regexstring,'gm');
返回inputcopy.replace(regexp1,'a');
};

log(解决方案(“苹果、李子和香蕉”\n果穗\n果酱”[“%”、“!”])
\\\\n
更改为
\\n
。它应该会起作用

function solution(input, markers) {
        let inputcopy = input;
        let regexstring = markers[0]+'.*?(?=\\n)';
        let regexp1 = new RegExp(regexstring, 'gm');

        return inputcopy.replace(regexp1,'a');
    };

    solution("apples, plums % and bananas\npears\noranges !applesauce", ["%", "!"])

您可以同时使用字符串结尾符号
$
和多行标志
m

否则,您不需要多行标志,只需要右换行符和双反斜杠
\\n

函数解决方案(输入、标记){
让inputcopy=输入;
设regexstring=markers[0]+'.*$';
设regexp1=newregexp(regexstring,'gm');
返回inputcopy.replace(regexp1,'a');
}
log(解决方案(“苹果、李子和香蕉”\n果穗\n果酱”[“%”、“!”]);

//苹果、李子、果仁、果仁!applesauce
你能描述一下正则表达式应该做什么吗?旁注(这不是问题):函数声明(如上面的
解决方案)没有
在它之后。包含它是无害的,因为JavaScript忽略了额外的
,但它并不在那里。你有两个额外的反斜杠-你只需要
\\\n
,而不是
\\\\n
(解决这个问题,它就会起作用)你总是使用第一个标记作为测试主题-你应该迭代
标记的数组,然后你可以检查你的正则表达式。