in reply to What does this regex do?

Ok, bit by bit,
$interest is the thing you're applying the regex to.
!~ is the "does not match" operator.
The // enclose the regex
^ means to match beginning at the start of $interest
-? means to optionally match a minus character
\.? means to optionally match a literal period
\d+ means to match one or more digits
(?:    ) does grouping in a noncapturing way
\. matches a literal period
\d+ matches one or more digits
The ? after that () means to optionally match that
grouping.
$ means the line must end there.

I don't quite know why someone told you to wrap that
in a while loop -- it doesn't really make sense, unless
perhaps the contents of the while loop might explain it.
In sum though, reading through my description there, you
see that a number is, for the purposes of this regex,

optionally starts with a minus sign, and maybe a decimal
point, then a sequence of digits, and possibly a decimal
point plus a fractional part.

Hope this helps..