2016-06-25 33 views
-1

我几乎无法在任何地方找到解决方案。是否有可能找到从startend以及里面的所有内容。查找并替换字符串中的内容

var start = "/* Start: User One */"; 
var end = "/* End: User One */"; 

var userCSS = " 
/* Start: User One */ 
div.user_one {height: 700px;} 
/* End: User One */ 

/* Start: Storm */ 
div.storm {height: 500px;} 
/* End: Storm */"; 

我添加的开始和结束,因为我已经提取它们,但我该怎么做了startend搜索,然后一旦我开始和结束发现我该怎么办从开始到结束取代所有内容。所以最好一次我发现了以下内容:

这是我期待的,最好能够具有可变

/* Start: User One */ 
div.user_one {height: 700px;} 
/* End: User One */ 

来取代它,我可以用一个变量替换它。我觉得自从我在寻找开始和结束时,这必须是某种正则表达式的解决方案,但是我的正则表达式非常有限。

新的内容变量

/* Start: User One */ 
div.user_one {height: 500px;} 
div.user_one h1 {height: 500px;} 
/* End: User One */ 

输入

/* Start: User One */ 
div.user_one {height: 500px;} 
/* End: User One */ 

/* Start: Storm */ 
div.storm {height: 500px;} 
/* End: Storm */"; 

预计输出

/* Start: User One */ 
div.user_one {height: 500px;} 
div.user_one h1 {height: 500px;} 
/* End: User One */ 

/* Start: Storm */ 
div.storm {height: 500px;} 
/* End: Storm */"; 
+1

请加一些例子和代码,你试过。 –

+0

什么是替换变量?显示更换后的预期结果 – RomanPerekhrest

+0

输入是什么?预期的输出是什么? –

回答

2

只是为了试验Ca SE必要的更换可以通过下面的正则表达式模式和String.replace功能来实现:

var start = "/* Start: User One */", 
    end = "/* End: User One */", 
    userCSS = "/* Start: User One */ div.user_one {height: 700px;}/* End: User One *//* Start: Storm */ div.storm {height: 500px;}/* End: Storm */", 
    newContent = "/* Start: User One */div.user_one {height: 500px;}div.user_one h1 {height: 500px;}/* End: User One */"; 

// you should always escape special characters in dynamic variables which are a part of a regular expression.  
var quote = function(str) { 
     return str.replace(/([.?*+^$[\]/(){}|-])/g, "\\$1"); 
    }, 
    re = new RegExp(quote(start) + "[^/]+" + quote(end)), 
    newCss = userCSS.replace(re, newContent); 

console.log(newCss); 

输出:

/* Start: User One */div.user_one {height: 500px;}div.user_one h1 {height: 500px;}/* End: User One *//* Start: Storm */ div.storm {height: 500px;}/* End: Storm */ 
+0

这是完美的,但我可以包含在正则表达式中的开始/结束,所以它更动态? – DennisTurn

+1

是的,但请注意,您应该始终在属于正则表达式的一部分的动态变量中转义特殊字符。查看我的更新 – RomanPerekhrest

+0

我认为这是我遇到的问题。你有任何例子如何逃脱开始/结束,然后我可以把它们动态地加入正则表达式? – DennisTurn