diff --git a/app/javascript/mastodon/features/compose/util/counter.js b/app/javascript/mastodon/features/compose/util/counter.js index ec2431096b..e59f9c1644 100644 --- a/app/javascript/mastodon/features/compose/util/counter.js +++ b/app/javascript/mastodon/features/compose/util/counter.js @@ -1,9 +1,20 @@ +import regexSupplant from 'twitter-text/dist/lib/regexSupplant'; +import validDomain from 'twitter-text/dist/regexp/validDomain'; + import { urlRegex } from './url_regex'; const urlPlaceholder = '$2xxxxxxxxxxxxxxxxxxxxxxx'; +const validMention = regexSupplant( + '(^|[^/\\w])@(([a-z0-9_]+)@(#{validDomain}))', + { + validDomain, + }, + 'ig' +); + export function countableText(inputText) { return inputText .replace(urlRegex, urlPlaceholder) - .replace(/(^|[^/\w])@(([a-z0-9_]+)@[a-z0-9.-]+[a-z0-9]+)/ig, '$1@$3'); + .replace(validMention, '$1@$3'); } diff --git a/app/models/account.rb b/app/models/account.rb index 53bf2407e8..6f8c8f4c6f 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -71,7 +71,7 @@ class Account < ApplicationRecord INSTANCE_ACTOR_ID = -99 USERNAME_RE = /[a-z0-9_]+([.-]+[a-z0-9_]+)*/i - MENTION_RE = %r{(?