in reply to Need regex to check for disallowed characters

Perhaps it would be easiest to just use more than one RE. Another easy way is to check that it doesn't match what you don't want:
$input !~ /\d|\pP|\s.*?\s/;
(Not sure if you mean more than one consecutive space or just more than one space; or if you mean whitespace characters or just the space character; adjust to suit.)

I see in a followup that you perhaps mean any non-word non-space character when you say punctuation. So maybe something like: /[^\w\s]|\d|\s{2}/ (which will still allow _; if you don't want that, say /[^\w\s]|[\d_]|\s{2}/).