Ваше регулярное выражение, +[0-9]\s*
:
+
Совпадения +
. [0-9]
Совпадения single di git. \s*
Соответствует 0 или более пробельным символам (пробел, символ новой строки, табуляция и т. Д. c.)
Таким образом, ваше регулярное выражение соответствует '+8', '+8 ',' +8 ', то есть знак плюс, за которым следует один ди git, за которым следует любое количество пробелов.
Я предполагаю, что символ +
действителен только тогда, когда он предшествует всем числам. Поэтому используйте:
^ *\+?((?: *\d){10}) *$
^
Соответствует началу строки. *
Соответствует 0 или более пробелов. \+?
Соответствует необязательный +
символ. ((?: *\d){10})
Соответствует 10 вхождениям (см. ниже) из 0 или более пробелов, за которыми следует ди git в группе захвата 1. *
Соответствует 0 или более пробелов. $
Соответствует концу строки.
Ключевое под-регулярное выражение в приведенном выше регулярном выражении - ((?: *\d){10})
, которое требует, чтобы входные данные содержали в точности 10 цифр. Я просто выбрал номер 10 произвольно. Чтобы разрешить диапазон от 7 до 10 цифр, например, используйте ((?: *\d){7,10})
. Или чтобы указать 1 или более цифр, используйте ((?: *\d)+)
.
Якоря ^
и $
необходимы для того, чтобы входные данные содержали только допустимый ввод.
См. Regex Demo