The message returned by msgPool::invalid is often wrong, because StringAttribute sends it the regex for complete valid value while it expects the regex for individual valid characters.