I already said, I want to capture and validate in one pass
You've said it, but you've never said
why. If you want to ask a question, don't be shocked by the answer. If you're doing it to learn, fair enough. But realize that most every other programmer would use split for it's succinctness. Moreover, I subscribe to the "every function can be explained by one sentence not using the word 'and'". You are trying to capture
and validate. When something breaks, you've more debugging to do as you're trying to do two things at once.
thor