用特殊字符和空格替换js代码行
问题描述:
我在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使用,现在我把它变成新的正则表达式,但没有运气。
答
您试图替换的字符串由于特殊字符(如{
和(
)而破坏了正则表达式。
我使用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>