getMoveInput now validates against regex pattern and gameRules.isValidMove()