String range queries, non-identical lengths

I've been trying to develop some range queries of business applied document IDs. These are mixed alphanumeric values like "1a" and "47b"

I've had a look at previous questions such as; Elasticsearch alphanumeric range search

which works as far as it goes but things start to fall down when the IDs length changes. It appears string range uses a dictionary sort for its ranging. Such that

12A is considered to be less than 2.
D12 is considered to be less than D9.
E1 is considered to be bigger than AA1

Is there a documented approach for dealing with variable length string ranges that would consider the letter and number as whole units?