Javascript替换CKEditor中的所有值

Javascript replace all values in CKEditor

本文关键字:替换 CKEditor Javascript      更新时间:2023-09-26

Html:

<textarea name="Editor" class="ckeditor" id="aboutme"></textarea>

Javascript:

 var editor = CKEDITOR.instances.aboutme;
 var edata = editor.getData();

   for (var i = 0; i < edata.length; i++) {
var replaced_text = edata.replace(/('[##.+?##'])/, '<span style="background-color:yellow"><strong>$1</strong></span>'); // you could also use a regex in the replace
editor.setData(replaced_text);
   }

如果文本区域的值如下,

"Textxx [##YellowText##] Textxxxx"

我将[###YellowText###]替换为黄色背景。我的意思是,如果文本从[###开始,到###]结束,我会用黄色背景替换值。

如果我有下面这样的值,如果我在上面运行javascript代码,FirstText将变为黄色背景,而SecondText或其他文本永远不会改变。

"[##FirstText##] [##SecondText##] [##AnothrText##] [##xxText##]"

我尝试使用"表示">,但没有成功。

如果在javascript中开始[###并结束###],我如何将所有文本值更改为黄色背景?

谢谢。

将global(g(标志添加到正则表达式中,以替换所有匹配的实例。

var replaced_text = edata.replace(/('[##.+?##'])/g, '<span style="background-color:yellow"><strong>$1</strong></span>');

请参阅标志:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

编辑:

主要区别在于 original: /('[##.+?##'])/ modified: /('[##.+?##'])/g

var replaced_text = edata.replace(/'[##(.+?)##']/g, '<span style="background-color:yellow"><strong>$1</strong></span>');

在正则表达式的最后一个/之后添加g,以使替换全局(即在整个文本中多次发生,而不仅仅是第一次发生(。

我还更改了捕获组在正则表达式中的位置,因为我认为您不想在替换后保留[####]