OK, I guess this is a change, perhaps from [F] $validate() broken? .
Florian, I can see any fix is going to be potentially problematic since it will break compatibility of some usages.
Personally, I would like the inconsistency be fixed and the fix be in favour of the %length% case i.e. invalid chars be replaced by "", this being a change to the behavour in e.g. the case of the literal "02:13", previously replaced by "02:13" now to be replaced by "02_13". It seems to me as if this means the results would be identical as from $validate(,""), but for avoidance of doubt I would like the result to be defined as identical as from $validate(,"") i.e. replaces all /?*"<>|: with _ .
But please if any other users will suffer from the incompatibility, please do say what you prefer. I am sure Florian will listen, as always!