diff --git a/app/services/update_status_expiration_service.rb b/app/services/update_status_expiration_service.rb
index 468d009050..02ea106dbf 100644
--- a/app/services/update_status_expiration_service.rb
+++ b/app/services/update_status_expiration_service.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 class UpdateStatusExpirationService < BaseService
-  SCAN_EXPIRATION_RE = /#exp((\d+.\d+|\d+))([dhms]+)/
+  SCAN_EXPIRATION_RE = /#exp((\d{1,4}\.\d{1,2}|\d{1,4}))(d|h|m|s)/
 
   def call(status)
     existing_expiration = ScheduledExpirationStatus.find_by(status: status)
@@ -14,8 +14,6 @@ class UpdateStatusExpirationService < BaseService
     expiration_option = expiration[2]
     base_time = status.created_at || Time.now.utc
 
-    raise Mastodon::ValidationError, 'Too many expiration value' if expiration_num >= 10000
-
     expired_at = base_time + (expiration_option == 'd' ? expiration_num.days : expiration_option == 'h' ? expiration_num.hours : expiration_option == 's' ? expiration_num.seconds : expiration_num.minutes)
     ScheduledExpirationStatus.create!(account: status.account, status: status, scheduled_at: expired_at)
   end