Регулярное выражение для чтения положительных целых чисел с ведущими нулями
У меня есть следующее 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 (обратите внимание, что это уже не допускает пустую строку)$
- Конец строки (та же заметка, что и для^
)