set $xlateOutVals $xlateInVals is superflous since, by default, xlateOutVals *IS* equal xlateInVals.
The statement: if {$result >=0} {
will always be true since the rexexp above will return 0 or 1
As Jim said, treating xlateInVals and xlateOutVals as lists will probably solve your problem.
FWIW, I like string map in this situation bettter than regsub becaulse of the backslashes and the dots. However opinions are like rear ends. We all have one and most of them stink 😆