Регулярное выражение для проверки числовых значений - PullRequest
2 голосов
/ 17 сентября 2009

Регулярное выражение для проверки текстового поля, где я могу ввести целое число / число с плавающей запятой в asp.net

Ответы [ 6 ]

7 голосов
/ 17 сентября 2009

Почему бы не использовать CompareValidator , чтобы проверить, что значение является числом?

<asp:TextBox ID="numberTextBox" runat="server" /> 
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="numberTextBox" Operator="DataTypeCheck" Type="Double" ErrorMessage="Value must be a number" />
6 голосов
/ 17 сентября 2009
^[-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$

Будет соответствовать следующее (примеры):

3.4
34.34
45345
-34
.55
-.45
-2.2
1.0e-10
45.
1.e308
5 голосов
/ 17 сентября 2009

Попробуйте это:

^\d*\.?\d+$

Редактировать: Фредрик Мёрк сделал отличное предложение, чтобы сделать это выражение культурно осознанным. Создайте строку выражения следующим образом:

String regex = String.Format("^\d*\{0}?\d+$", 
                             CultureInfo
                             .CurrentCulture
                             .NumberFormat
                             .CurrencyDecimalSeparator);
4 голосов
/ 17 сентября 2009

Как видно из различных ответов, регулярные выражения могут добавлять ненужную сложность. float.TryParse() точно скажет вам, можно ли сделать значение плавающим или нет.

При этом также учитываются региональные настройки на компьютере пользователя, чего нет в регулярных выражениях (или они станут ужасными, если они попытаются).

Я бы хотел использовать что-то вроде этого вместо регулярного выражения:

bool isValid = float.TryParse(textbox1.Text);
1 голос
/ 17 сентября 2009

код

^ [\ d.] + $

соответствует нескольким точкам в строках, например "1.1.1"

1009 * попробовать *

^ \ d + (. \ D +)? $

вместо

также следует отметить, что в некоторых странах вместо точки используется запятая.

1 голос
/ 17 сентября 2009

^?.? [- +] [0-9] * \ [0-9] + $

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...