2016-06-25 2 views
-1

Я буквально не могу найти решение для этого в любом месте. Можно ли найти все от start и end, а также содержимое внутри.Найти и заменить содержимое в строке

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 */"; 

Я добавил начало и конец, как я уже извлеченный их, но как это сделать поиск для start и end, а затем, как только я начала и конца нашел как я замените все от начала и до конца. Так что в идеале, как только я нашел следующее:

Это то, что я ищу, и в идеале быть в состоянии заменить его с переменной

/* 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

Только для испытания ок С.Е. требуется замена может быть достигнуто за счет следующих регулярных выражений шаблона и 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

Смежные вопросы