There is only a single regular expression that can pick up pure integers: [-+]?[0-9]+. When you combine this with gsub, you get the straightforward solution in awk:
$ awk '{t=OFS $0 OFS;gsub(FS,OFS OFS,t);print gsub(OFS"[-+]?[0-9]+"OFS,"",t)}'
First off, we use gsub to count the substitutions. gsub(ere,repl,str) makes a substitution of all substrings matching ere and replaces it with the string repl. It returns the total amount of substitutions done. This is exactly what we are interested in.
There is however still a problem. You cannot just substitute the count the matches of the regular expression [-+]?[0-9]+ as this would also count strings like foo123bar. To avoid this, we try to replace the integers sandwiched between the field separators.
Field separators, on the other hand are again tricky. They can be regular expressions themselves and the default FS=" " matches any white-space. Since the output-field separator is a fixed string, it is best to substitute FS by OFS. In short, the following would fail when working with a tsv-file:
awk '{t=FS $0 FS; print gsub(FS"[-+]?[0-9]+"FS,"",t)}' file
While this is all nice, we still have to take care of one last thing: consecutive fields. gsub does not match with overlaps, hence we have to duplicate the output field separator.
Imagine OFS="_", then the string _123_456_, would lead to count one while _123__456_ would return two.