Ответ 1
Проблема - поведение привязки генератора. По умолчанию (т.е. Без использования группировки) выражение, содержащее генератор переменного тока (|
), будет соответствовать либо значению слева от генератора, либо значению справа.
Итак, в вашем выражении вы соответствуете одному из следующих:
-
^[1-9]
-
0$
Ваш вызов метода IsMatch
возвращает true
, потому что второй из этих двух параметров соответствует строке 00000000000000000000000000000
.
Чтобы ограничить привязку генератора к определенной части вашего выражения, вам необходимо сгруппировать с помощью круглых скобок, как показано ниже:
^([1-9]|0)$
Объединяя все это, строгое выражение для проверки целых чисел, запрещение начальных нулей и отрицательного нуля, может выглядеть так:
^(-?[1-9][0-9]*|0)$