diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts index faae6e56a3..491375ad84 100644 --- a/packages/megalodon/src/misskey.ts +++ b/packages/megalodon/src/misskey.ts @@ -1522,11 +1522,11 @@ export default class Misskey implements MegalodonInterface { )) { if (m.acct == m.username) status.content = status.content.replace( - `@${m.acct}@${this.baseUrlToHost(this.baseUrl)}`, + new RegExp(`(?<=^|\\s|>)@${m.acct}@${this.baseUrlToHost(this.baseUrl)}(?=[^a-zA-Z0-9]|$)`, 'g'), `@${m.acct}`, ); status.content = status.content.replace( - `@${m.acct}`, + new RegExp(`(?<=^|\\s|>)@${m.acct}(?=[^a-zA-Z0-9]|$)`, 'g'), `@${m.acct}`, ); } @@ -1542,7 +1542,7 @@ export default class Misskey implements MegalodonInterface { if (text == undefined) return mentions; const mentionMatch = text.matchAll( - /(?<=^|\s)@(?.*?)(?:@(?.*?)|)(?=\s|$)/g, + /(?<=^|\s)@(?[a-zA-Z0-9_]+)(?:@(?[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)(?=[^a-zA-Z0-9]|$)/g, ); for (const m of mentionMatch) { @@ -2963,7 +2963,7 @@ export default class Misskey implements MegalodonInterface { } try { - const match = q.match(/^@(?.*?)(?:@(?.*?)|)$/); + const match = q.match(/^@(?[a-zA-Z0-9_]+)(?:@(?[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)$/); if (match) { const lookupQuery = { username: match.groups?.user,