to fix it: prepend the slash before the beginning of a number (i use the :to separate pattern and replacement instead of /, no need to escape the slash then)
% echo 1 2 3 4 5 6 7 | sed 's:\([1-9]\+\):/\1:g'
the problem of your command is, that you use the *to match either space or a carret ^. and not just one of them but any number of them, including 0. that matches at the end of the line (after the 7) as well (and luckily for you also at the beginning).
to make this work with either word (aka nonspace) use this:
% echo ha hu 1 2 ho | sed 's:[^ ]\+:/&:g'