Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Replace - Fatal编程技术网

在Javascript中,我需要一个正则表达式来删除两个文本(范围)之间的字符串中的多个文本

在Javascript中,我需要一个正则表达式来删除两个文本(范围)之间的字符串中的多个文本,javascript,regex,replace,Javascript,Regex,Replace,假设我有这个字符串: var str = 'abc abcd --from-- xyz xyzz --to-- abc abcdd --from-- xsfkj --to-- abc'; 我的方法应该删除--从--到--之间的所有文本。 我认为最好的方法是用正则表达式,我只是不知道如何 我查了一下,结果得到了这个字符串: console.log(str.replace(/--from--.*--to--/, "")); // result:"abc abcd abc", not good.

假设我有这个字符串:

var str = 'abc abcd --from-- xyz xyzz --to-- abc abcdd --from-- xsfkj --to-- abc';
我的方法应该删除
--从--
到--之间的所有文本。 我认为最好的方法是用正则表达式,我只是不知道如何

我查了一下,结果得到了这个字符串:

console.log(str.replace(/--from--.*--to--/, "")); // result:"abc abcd  abc", not good.
此外,是否可以在范围边框中设置参数而不是硬编码文本


谢谢。

您需要使用非贪婪型,将替换部件放入捕获组或使用环视:

str.replace(/--from--(.*?)--to--/g, "")
如果您想将
--从--
--替换为--
,则不再需要捕获组

str.replace(/--from--.*?--to--/g, "")

您需要使用一个非贪婪组,并将替换部件放入捕获组或使用环视:

str.replace(/--from--(.*?)--to--/g, "")
如果您想将
--从--
--替换为--
,则不再需要捕获组

str.replace(/--from--.*?--to--/g, "")

您需要带有惰性量词的全局标志:

console.log(str.replace(/--from--.*?--to--/g, ""));
//=> abc abcd  abc abcdd  abc
更新:

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

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

console.log(str.replace(re, ""));

您需要带有惰性量词的全局标志:

console.log(str.replace(/--from--.*?--to--/g, ""));
//=> abc abcd  abc abcdd  abc
更新:

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

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

console.log(str.replace(re, ""));

您缺少
g
标志。您缺少
g
标志。谢谢:)设置参数而不是硬编码字符串怎么样?我的意思是var from='--from--';=>设置。我刚刚发现多行的[\s\s]而不是“.”(点)。因此,要使此解决方案适用于多行文本,需要将点替换为[\s\s],如下所示:var re=new RegExp(从+'[\\s\\s]*?'+到“g”);是的,这是js正则表达式中用来匹配多行中任何字符的记号。谢谢:)设置参数而不是硬编码字符串怎么样?我的意思是var from='--from--';=>设置。我刚刚发现多行的[\s\s]而不是“.”(点)。因此,要使此解决方案适用于多行文本,需要将点替换为[\s\s],如下所示:var re=new RegExp(从+'[\\s\\s]*?'+到“g”);是的,这是js正则表达式中用来匹配多行中任何字符的记号。