ORDER BY IF(title REGEXP '^[0-9]',title+0,title)
But, that expression is going to return a numeric value; and since "title+0" is essentially equal to "title" (in terms of a numeric value comparison), I don't think that's going to do what you want it to.
(The "+0" operation will add zero to the leading numeric portion of the string value, and return a numeric value; so the entire expression will be evaluated as a numeric value. Which means that the bare "title" will also be a numeric value, which will be returned as 0 if there is no leading numeric.
So, that is essentially equivalent to:
ORDER BY title+0
In what order do you actually want the title values returned in? Do you want the rows returned in order by the leading numeric, and then by the title string?
I'm thinking you want to order by the string value of title
when there isn't a leading numeric digit; otherwise, by the numeric value of leading numeric digits, and then the string value of title, so something like this might get you closer to what you want:
ORDER BY title REGEXP '^[0-9]', title+0, title