Counting and spelling up
Pyth, 19 bytes
sXzsJ+rBG1jkUTs._MJ
Try it online: Demonstration or Test Suite
Explanation
sXzsJ+rBG1jkUTs._MJ
rBG1 the list ["abc...xyz", "ABC...XYZ"]
+ jkUT appends the string "0123456789"
J save this list of 3 strings in J
sJ join the strings in J
._MJ create all prefixes of the strings in J
s and combine them to one list
XzsJ s._MJ translate the input string, chars from sJ
get translated to the correct prefix,
chars that don't appear in sJ don't get translated
s join all resulting translation strings
Python 2.7, 100 98 96 bytes
a=[]
for c in raw_input():d=ord(c);a+=range(max(d&96|1,48),d)*c.isalnum()+[d]
print bytearray(a)
TeaScript, 24 bytes 26 28
TeaScript is JavaScript for golfing
xl(#(i=lN()1)h(ii(l)+1))
Pretty short
Try it online
Explanation
x.l(# // Loops through each character of the string
(i=l.N()1) // Determines whether a character is alphanumeric
// Will return A-Z, a-z or 0-9 depending on result
// Assigns to variable i
.h( // Get characters up to...
i.i // where the character is in "i"
) + 1 // Increased by one
)