There is a regression:
Fedora 34:
$ printf '4A\n' | LC_ALL=C.UTF-8 sed 's/[4-4]\+/X/'
XA
Fedora 35:
$ printf '4A\n' | LC_ALL=C.UTF-8 sed 's/[4-4]\+/X/'
X
It depends on locale, Fedora 35:
$ printf '4A\n' | LC_ALL=en_US.UTF-8 sed 's/[4-4]\+/X/'
XA
And the regular expression, e.g. character set without a range works:
$ printf '4A\n' | LC_ALL=C.UTF-8 sed 's/[4]\+/X/'
XA
This is very probably triggered by a recent glibc changes. Tested with:
glibc-common-2.33.9000-53.fc35.x86_64
glibc-gconv-extra-2.33.9000-53.fc35.x86_64
glibc-langpack-cs-2.33.9000-53.fc35.x86_64
glibc-langpack-en-2.33.9000-53.fc35.x86_64
glibc-langpack-tr-2.33.9000-53.fc35.x86_64
glibc-2.33.9000-53.fc35.x86_64
glibc-headers-x86-2.33.9000-53.fc35.noarch
glibc-devel-2.33.9000-53.fc35.x86_64
glibc-static-2.33.9000-53.fc35.x86_64
sed-4.8-7.fc34.x86_64