提交
This commit is contained in:
22
src/utils/autociteHtml.js
Normal file
22
src/utils/autociteHtml.js
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* 从 HTML 字符串中按出现顺序收集引用标签的 data-id(mycite / autocite 与稿面、TinyMCE、历史库一致)
|
||||
* 支持逗号多 id、属性任意顺序、单/双引号
|
||||
*/
|
||||
export function extractAutociteIdsFromHtmlString(raw) {
|
||||
if (!raw || typeof raw !== 'string') return [];
|
||||
const ids = [];
|
||||
const tagRe = /<(mycite|autocite)\b[^>]*>/gi;
|
||||
let m;
|
||||
while ((m = tagRe.exec(raw)) !== null) {
|
||||
const tag = m[0];
|
||||
const dbl = tag.match(/\bdata-id\s*=\s*"([^"]*)"/i);
|
||||
const sgl = tag.match(/\bdata-id\s*=\s*'([^']*)'/i);
|
||||
const val = dbl ? dbl[1] : sgl ? sgl[1] : '';
|
||||
if (!val) continue;
|
||||
val.split(',').forEach((part) => {
|
||||
const id = part.trim();
|
||||
if (id && !ids.includes(id)) ids.push(id);
|
||||
});
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
Reference in New Issue
Block a user