2016-11-29 77 views
1

我在textarea和顺序div中有文本行,表示这些行。 我正在尝试重新排列divs,并使相应的文本重新排序。用特殊字符和空格替换js代码行

Div与数组中的文本行的索引号具有相同的id。

现在我坚持删除行。 如果是简单的文本,可以删除行。但在我的情况下,这是一个JS代码。由于某种原因,它不起作用。

工作代码http://codepen.io/one2gov/pen/eBGqBR?editors=1111(下selectedDivNumber检查它)

var selectedDivNumber = 2; 
var linesArray = ["line0;", "line1;", "tl.to(abstract_m, 13, {x:'1327', y:'117', autoAlpha:1, delay:4}, 'num_sound');"]; 
var arrayNumber = linesArray[selectedDivNumber]; 

textArea = $("#fname").val(); 
textArea = textArea.split(';'); 

arrayNumber = new RegExp(arrayNumber,'g'); 
$("#fname").html($("#fname").html().replace(arrayNumber, "something else;")); 

我试着在.replace变量arrayNumber使用,现在我把它变成新的正则表达式,但没有运气。

回答

1

您试图替换的字符串由于特殊字符(如{()而破坏了正则表达式。

我使用RegExp逃生功能此:

RegExp.escape= function(s) { 
 
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); //replace special characters so RegExp won't break 
 
}; 
 

 
//tl.to(abstract_m, 13, {x:'1327', y:'117', autoAlpha:1, delay:4}, 'num_sound'); 
 

 
var selectedDivNumber = 2; 
 
var linesArray = ["line0;", "line1;", "tl.to(abstract_m, 13, {x:'1327', y:'117', autoAlpha:1, delay:4}, 'num_sound');"]; 
 
var arrayNumber = linesArray[selectedDivNumber]; 
 

 
textArea = $("#fname").val(); 
 
textArea = textArea.split(';'); 
 

 
arrayNumber = new RegExp(RegExp.escape(arrayNumber),'g'); //escape with RegExp.escape 
 
$("#fname").html($("#fname").html().replace(arrayNumber, "something else;"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea id = "fname" = rows="4" cols="50"> 
 
line0; 
 
line1; 
 
tl.to(abstract_m, 13, {x:'1327', y:'117', autoAlpha:1, delay:4}, 'num_sound'); 
 
</textarea>