Added Character Set Validator

- [x] implemented character set validator with tests
While incredibly unlikely, decimal digit is a subset of alphanumeric, so we could potentially get a false negative here. I think using `punctuationCharacterSet` or something like that will guarantee a failure.