There are a few things you can do up front, such as be clear that the input expects a number. Or simply not accept inputs that aren't numbers (if they type characters just ignore them).
To dissect your options a bit more:
- Your first three (number is expected/required, value should be a number) are good. They call out that a number is something you need to enter. Fairly straightforward and appropriate if the user inputs something that is not a number.
- The next two (number is not valid, invalid number) are less useful , as they are too vague. "Number is not valid." Does that mean I entered a number, and it's not a valid number? Tell me what IS a valid number. If I enter a character, then it's just wrong. I didn't give you an invalid number, I gave you an invalid input, that is not a number.
- The last one is ok, but also a bit vague. "Value is not a number." Ok? Is it a problem that it's not a number? You're stating a fact about the input, when I think it could be more clear to say "Value should BE a number."