2016-11-29 5 views
1

私はこの行を表すテキストエリアと連続したdivにテキスト行を持っています。 私はdivを並べ替え、それに応じてテキストの並び順を変えようとしています。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>

関連する問題