From 7711ba8e2ec93fa2c60efc2b3806b0eaebfc1a0c Mon Sep 17 00:00:00 2001 From: Anton Bulakh Date: Sat, 4 Jan 2025 21:03:18 +0200 Subject: [PATCH] fix(tags): Dont consume a space before content tags Content tags appeared to be "hugging" the text that preceeds them, and as it turned out the tag regex was consuming the space, so the final HTML actually looked like `some text *\[\!\w+\|?.*?\][+-]?.*$/gm) -// (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line +// (?<=^| ) -> a lookbehind assertion, tag should start be separated by a space or be the start of the line // #(...) -> capturing group, tag itself must start with # // (?:[-_\p{L}\d\p{Z}])+ -> non-capturing group, non-empty string of (Unicode-aware) alpha-numeric characters and symbols, hyphens and/or underscores // (?:\/[-_\p{L}\d\p{Z}]+)*) -> non-capturing group, matches an arbitrary number of tag strings separated by "/" const tagRegex = new RegExp( - /(?:^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu, + /(?<=^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu, ) const blockReferenceRegex = new RegExp(/\^([-_A-Za-z0-9]+)$/g) const ytLinkRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/