The better form is use the entitie pre-defined by IBM, @sys-number
to get numbers from the user input. And you can use use with conditions and to get the number with context variable too, check the JSON example:
{
"context": {
"number": "<? @sys-number ?>"
},
"output": {
"text": {
"values": [
"Now is $hora. Sector please?"
],
"selection_policy": "sequential"
}
}
}
If user type two or 2, the entitie recognize!
You can use regex
expression to obtain only the numbers you have pre-defined too!
How to active: -> Entities -> System Entities -> sys-number = ON:

Obs.: Waiting Watson TRAINNING after you active this entitie.
Example, with sys-number add in your node condition:
@sys-number:1
Check the image:

If user type the number correct:

Check the dialog if user dont type the correct number with true
condition:

I did the example for you understand what I do for that:
- Download the JSON for verify how to do it with REGEX here.
- Download the JSON for verify how to do it with SYS-NUMBER here.
EDIT:
Refer your questions
In this case you can use regex, and use the context variable for make conditions in other node. My workspace with regex can help you with numbers. And, the variable $number you can use in the next node to verify if the user typed correctly the number.
And, the other case is to use the Jump to inside conversation. And use true
if the user dont type the number correctly again.
Check my image:

Download the new workspace here.
Study more about conditions here.