diff --git a/src/lib/markdown/internalLinkEmbedder.ts b/src/lib/markdown/internalLinkEmbedder.ts index 467f68b44..5e43c364b 100644 --- a/src/lib/markdown/internalLinkEmbedder.ts +++ b/src/lib/markdown/internalLinkEmbedder.ts @@ -4,15 +4,13 @@ // URLの一部になっているときは置換しない (URLの正規表現は完全ではない) const urlRegexStr = '(?:https?://)?(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]+(?:/[^/]+)*/?' +const urlStartRegex = new RegExp(`^${urlRegexStr}`) const mentionRegex = new RegExp( - `(?) => { const replaceMention = (m: string, getters: Readonly) => { return m.replace(mentionRegex, s => { + const urlStart = s.match(urlStartRegex) + if (urlStart && urlStart.length !== 0) return s // 始まりが:なものを除外 if (s.startsWith(':')) return s // 終わりが.のものを除外 @@ -155,6 +155,8 @@ const replaceMention = (m: string, getters: Readonly) => { const replaceChannel = (m: string, getter: Readonly) => { return m.replace(channelRegex, s => { + const urlStart = s.match(urlStartRegex) + if (urlStart && urlStart.length !== 0) return s // .slice(1)は先頭の#を消すため // 小文字化はgetter内で行う const t = s.slice(1)