在Javascript中,我需要一个RegEx来删除具有多个外观的2个文本(范围)之间的字符串中的文本

mrg*_*oos 1 javascript regex replace

假设我有这个字符串:

var str = 'abc abcd --from-- xyz xyzz --to-- abc abcdd --from-- xsfkj --to-- abc';
Run Code Online (Sandbox Code Playgroud)

我的方法应删除--from--和之间的所有文本--to--.我认为最好的方法是使用RegEx来做,我只是不知道如何...

我查看了这个解决方案,但结果得到了这个字符串:

console.log(str.replace(/--from--.*--to--/, "")); // result:"abc abcd  abc", not good.
Run Code Online (Sandbox Code Playgroud)

此外,是否可以在范围边界中设置参数而不是硬编码文本?

谢谢.

anu*_*ava 6

你需要带有懒惰量词的全局标志:

console.log(str.replace(/--from--.*?--to--/g, ""));
//=> abc abcd  abc abcdd  abc
Run Code Online (Sandbox Code Playgroud)

更新:

您可以在正则表达式中使用变量,如下所示:

var from = '--from--'; 
var to = '--to--';
var re = new RegExp(from + '.*?' + to, "g");

console.log(str.replace(re, ""));
Run Code Online (Sandbox Code Playgroud)