Anki卡片模板格式化求助:实现指定文本加粗效果
解决Anki卡片模板中两类文本自动加粗的问题
问题分析
你之前的代码无效,核心原因是正则匹配的是英文双引号,但你实际使用的是中文双引号“”,同时缺少对词源原词的匹配规则。下面是针对需求的完整可行方案:
完整模板代码(针对Etymology字段)
把卡片模板中原有的 {{Etymology}} 替换成以下内容:
<span class="etymology-content">{{Etymology}}</span> <script> // 获取词源字段内容 const elem = document.querySelector('.etymology-content'); let content = elem.innerHTML; // 1. 加粗中文双引号内的文本 content = content.replace(/“([^”]+)”/g, '<b>“$1”</b>'); // 若同时存在英文双引号,可添加此行: // content = content.replace(/"([^"]+)"/g, '<b>"$1"</b>'); // 2. 加粗词源原词(匹配含特殊元音、无空格的古词,如edlēan、ǫðlask) // 正则规则:匹配由字母、特殊元音组成的连续单词 content = content.replace(/\b([a-zA-Zēǫð]+)\b/g, '<b>$1</b>'); // 把处理后的内容放回元素 elem.innerHTML = content; </script>
针对Example字段的处理(按需使用)
如果例句字段也需要加粗引号内文本,将模板中的 {{Example}} 替换为:
<span class="example-content">{{Example}}</span> <script> const elem = document.querySelector('.example-content'); let content = elem.innerHTML; // 同时处理中文/英文引号内文本 content = content.replace(/“([^”]+)”/g, '<b>“$1”</b>'); content = content.replace(/"([^"]+)"/g, '<b>"$1"</b>'); elem.innerHTML = content; </script>
使用步骤
- 打开Anki,选中目标卡组,点击「卡片」进入模板编辑界面
- 在「正面」或「背面」模板中,找到对应字段位置,替换成上述代码
- 点击「关闭」保存设置,新卡片和旧卡片都会自动应用效果
自定义调整
如果词源原词包含其他特殊字符(如æ、þ),可把正则里的 [a-zA-Zēǫð] 修改为 [a-zA-Zēǫðæþ],按需添加对应字符即可。
内容的提问来源于stack exchange,提问作者Ooo Oooo
相关产品推荐
相关产品推荐

