accept 0 as a non-empty string