我正在尝试替换使用TinyMCE增强的输入字段中文本的所有出现次数,每次用户按空格键时都会发生这种情况(类似于Word中的自动更正功能)。
我遇到的问题是当被替换的字符串包含触发器时,它会一次又一次地替换它。 例如,用“
”替换“hello”<span class="replaced">hello world</span>
它将再次替换为
<span class="replaced"><span class="replaced">hello world</span> world</span>
所以我必须写一个正则表达式来过滤掉已经被替换的文本中的匹配。
你可以帮帮我吗?这是我目前的代码:
for (r in autocorrect_replacements) {
if (newHtml.indexOf(autocorrect_replacements[r][0]) > -1) {
replacement_html = '<span class="replaced">'+autocorrect_replacements[r][1] + '</span>';
newHtml = newHtml.replace(autocorrect_replacements[r][0],replacement_html);
ed.setContent(newHtml);
}
我不是正则表达式的粉丝,但我认为在这种情况下这是正确的解决方案。
答案 0 :(得分:0)
获得跨度的正则表达式为/<span class="replaced">.*<\/span>/
。不确定它是否是正确的解决方案。
您可以这样做:
for (r in autocorrect_replacements) {
if (newHtml.indexOf(autocorrect_replacements[r][0]) > -1) {
if (!(/<span class="replaced">.*<\/span>/.test(autocorrect_replacements[r][1]))){
replacement_html = '<span class="replaced">'+autocorrect_replacements[r][1] + '</span>';
newHtml = newHtml.replace(autocorrect_replacements[r][0],replacement_html);
ed.setContent(newHtml);
}
}