It reminds me of an experience I had at work. I wrote some tests for a feature that would store some values in a database. However, my tests would always fail. Retrieved data would never match the input data. I eventually decided to trace exactly what was happening in the database and found a stored procedure ran whenever I entered data. It "fixed" my input data. When I told another dev about this they said their "database expert" said it was "good design".
Absolute insanity. Never, ever, "correct" deliberate input. Validate it and tell the user what is wrong. 1) This raises awareness 2) The desired behavior is easier to test.
like the examples I gave - fixing date formats, address lines, name seperation, perhaps auto compressing images, etc
Regex, custom logic, and Dateformat libs, are enough