diff --git a/src/core/render/slugify.js b/src/core/render/slugify.js index d27250f65a..6f1f6a7ee2 100644 --- a/src/core/render/slugify.js +++ b/src/core/render/slugify.js @@ -13,6 +13,7 @@ export function slugify(str) { let slug = str .trim() .normalize('NFC') + .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') .replace(/\uFE0F/g, '') .replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}]/gu, '') .replace(/[A-Z]+/g, lower) diff --git a/test/unit/render-util.test.js b/test/unit/render-util.test.js index 094308ea82..9636c01e6b 100644 --- a/test/unit/render-util.test.js +++ b/test/unit/render-util.test.js @@ -212,5 +212,10 @@ describe('core/render/slugify', () => { const quoteCleanedSlug = slugify('"The content"'); expect(quoteCleanedSlug).toBe('the-content'); + + const markdownLinkSlug = slugify( + '[5.0.0-rc.4](https://github.com/docsifyjs/docsify/compare/v5.0.0-rc.3...v5.0.0-rc.4) (2026-03-11)', + ); + expect(markdownLinkSlug).toBe('_500-rc4-2026-03-11'); }); });