在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正则表达式中用来匹配多行中任何字符的记号。