2016-11-29 71 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>