diff --git a/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts b/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts index c4870bec6b..48ad67844f 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts @@ -152,6 +152,22 @@ describe('parseMarkdownContentTitle', () => { }); }); + test('Should parse markdown h1 title at the top and next one after it', () => { + const markdown = dedent` + + # Markdown Title + + ## Heading 2 + + Lorem Ipsum + + `; + expect(parseMarkdownContentTitle(markdown)).toEqual({ + content: '## Heading 2\n\nLorem Ipsum', + contentTitle: 'Markdown Title', + }); + }); + test('Should parse markdown h1 alternate title', () => { const markdown = dedent` diff --git a/packages/docusaurus-utils/src/markdownParser.ts b/packages/docusaurus-utils/src/markdownParser.ts index 3cb83dc366..7ec0a86a51 100644 --- a/packages/docusaurus-utils/src/markdownParser.ts +++ b/packages/docusaurus-utils/src/markdownParser.ts @@ -86,7 +86,7 @@ export function parseMarkdownContentTitle( const content = contentUntrimmed.trim(); - const regularTitleMatch = /^(?#\s*(?[^#\n]*)+\s*#*[\s\r]*?\n*?)/g.exec( + const regularTitleMatch = /^(?<pattern>#\s*(?<title>[^#\n]*)+[ \t]*#?\n*?)/g.exec( content, ); const alternateTitleMatch = /^(?<pattern>\s*(?<title>[^\n]*)\s*\n[=]+)/g.exec(