I think that ^ means NOT, 0-9 means from characters 0 to 9, so 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and the point (.) is... a point !
So, PHP "thinks", "I must replace any character that is not from 0 to 9 and not a . by nothing".
Concerning the [ ], I just don't know !