Попробуйте это:
^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\dH)?$
Вы можете проверить это здесь regexr.com? 2thld
(?:)
не группа захвата, в противном случае захваченная часть сохраняется в переменной
\d
равно [0-9]
?
после того, как группа или персонаж делает это необязательным
+
означает один или несколько
{1,3}
говорит, по крайней мере, один раз, самое большее, три случая
[M]
не требуется, если есть только 1 символ, тогда достаточно только M