我在文本区域和连续的 div 中有几行文本,代表这些行。 我正在尝试重新排序 div 并相应地重新排序文本行。
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
转义函数:
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>
关于javascript - 用特殊字符和空格替换js代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873397/