Регулярное выражение для чтения положительных целых чисел с ведущими нулями

У меня есть следующее TextBox а также RegularExpressionValidator

<asp:TextBox ID="txtQuantity" runat="server" MaxLength="7"></asp:TextBox>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
runat="server" ErrorMessage="Enter only positive integer values."
ControlToValidate="txtQuantity" ValidationExpression="^[1-9][0-9]*$"
CssClass="required" Display="Dynamic" />

Он правильно читает все натуральные числа и выдает сообщения об ошибках в неправильных записях.

Но проверка становится неудачной, когда вводится положительное целое число, предшествующее 0.

Пример: "098", "09" так далее

Должен ли я изменить свое регулярное выражение или логику?

1 ответ

Решение

Вы можете разрешить нули с ненулевыми значениями и запретить только нули (или пустую строку) с помощью

^(?!0+$)[0-9]+$

Посмотреть демо

РЕГЭКС ОБЪЯСНЕНИЕ:

  • ^ - Начало строки (не уверен, что это необходимо, я думаю, что регулярное выражение привязано по умолчанию, но, пожалуйста, проверьте)
  • (?!0+$) - Негативный взгляд, который проверяет, не равна ли вся строка 0 (или же 0000)
  • [0-9]+ - 1 или более цифр от 0 до 9 (обратите внимание, что это уже не допускает пустую строку)
  • $ - Конец строки (та же заметка, что и для ^)
Другие вопросы по тегам