I'm really not being churlish at all, and the goalposts have not moved at all

. If you read through the original specification, I think it was clear - I went out of my way to make it as clear as I could. None of your three solutions satisfy those criteria, either rejecting what they should accept, or accepting what they should reject.
Your 1st attempt accepted ZSDGHASGHASHGZDHFGFT when it shouldn't have (no Z in pos 3 or 4). Your 2nd attempt rejected ZAZDEF, when it should have accepted it (it meets all my criteria). Your 3rd attempt rejected ZZZMARKER, which also meets all my criteria.
Never mind, as I said, I have a workaround. I don't want to fall out about this. Thank you very much for trying to help.
Kind regards
Mike