Wrong two ways. The caret should be after the colon (Update: or just inside the outer brackets, in which case it's normal charset negation and not a POSIX extension), and the brackets need to be doubled. Did you test this? Did you try it with and without nondigits in the string?
Caution: Contents may have been coded under pressure.