Haskell, 75 bytes 95 bytes 91 7979 61 bytes
b=(`notElem`['0'..'9'])
r=reverse
d#e|b$last$d=d++e|2>1=rd#e=r(snd$break b$r d)++e
I tried doing this without regex so maybe that would be a dramatically improved answer. Also there are a couple ways I could go about this so I am unsure if I can shave a few bytes with a different approach.
UPDATE: I went up in bytes because I realized I was failing the test case where numbers exist in the string that are not the suffix. Now I am sure that regex would provide a much better answer.
UPDATE2: After some great feedback, more bytes were golfed!