[mastodon-client] improve mention regexes

This commit is contained in:
Laura Hausmann 2023-07-18 15:57:54 +02:00
parent 2b59d03d6f
commit 0ff1f7ca65
Signed by: zotan
GPG key ID: D044E84C5BE01605

View file

@ -1522,11 +1522,11 @@ export default class Misskey implements MegalodonInterface {
)) { )) {
if (m.acct == m.username) if (m.acct == m.username)
status.content = status.content.replace( 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}`, `@${m.acct}`,
); );
status.content = status.content.replace( status.content = status.content.replace(
`@${m.acct}`, new RegExp(`(?<=^|\\s|>)@${m.acct}(?=[^a-zA-Z0-9]|$)`, 'g'),
`<a href="${m.url}" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@${m.acct}</a>`, `<a href="${m.url}" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@${m.acct}</a>`,
); );
} }
@ -1542,7 +1542,7 @@ export default class Misskey implements MegalodonInterface {
if (text == undefined) return mentions; if (text == undefined) return mentions;
const mentionMatch = text.matchAll( const mentionMatch = text.matchAll(
/(?<=^|\s)@(?<user>.*?)(?:@(?<host>.*?)|)(?=\s|$)/g, /(?<=^|\s)@(?<user>[a-zA-Z0-9_]+)(?:@(?<host>[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)(?=[^a-zA-Z0-9]|$)/g,
); );
for (const m of mentionMatch) { for (const m of mentionMatch) {
@ -2963,7 +2963,7 @@ export default class Misskey implements MegalodonInterface {
} }
try { try {
const match = q.match(/^@(?<user>.*?)(?:@(?<host>.*?)|)$/); const match = q.match(/^@(?<user>[a-zA-Z0-9_]+)(?:@(?<host>[a-zA-Z0-9-.]+\.[a-zA-Z0-9-]+)|)$/);
if (match) { if (match) {
const lookupQuery = { const lookupQuery = {
username: match.groups?.user, username: match.groups?.user,