Применение проверки для модели в MVC и ее использование с помощью Regex.
Чтобы проверить, что идентификатор моей модели больше 0, отправьте.
Я не знаком с Regex... может кто-нибудь помочь мне?
Спасибо
Применение проверки для модели в MVC и ее использование с помощью Regex.
Чтобы проверить, что идентификатор моей модели больше 0, отправьте.
Я не знаком с Regex... может кто-нибудь помочь мне?
Спасибо
Я не знаю, как MVC имеет значение, но если ваш идентификатор является целым числом, этот BRE должен делать:
^[1-9][0-9]*$
Если вы хотите сопоставить действительные числа (float), а не целые числа, вам необходимо обработать вышеприведенный случай, а также обычные десятичные числа (т.е. 2.5
или 3.3̅
), случаи, когда ваш шаблон находится между 0 и 1 (т.е. 0.25
), а также случай, когда ваш шаблон имеет десятичную часть, равную 0. (т.е. 2.0
). И пока мы на нем, мы добавим поддержку ведущих нулей в целые числа (т.е. 005
):
^(0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*)$
Обратите внимание, что этот второй является расширенным RE. То же самое можно выразить в Basic RE, но почти все понимают ERE в наши дни. Позвольте разложить выражение на части, которые легче усваивать.
^(
Каретка соответствует нулевому значению в начале строки, поэтому перед вашим регулярным выражением с помощью каретки привязывает его к началу строки. Открывающая скобка находится из-за or-bar, ниже. Подробнее об этом позже.
0*[1-9][0-9]*(\.[0-9]+)?
Это соответствует любому целому числу или любому числу с плавающей запятой выше 1. Таким образом, наш 2.0
будет сопоставляться, но 0.25
не будет. 0*
в начале обрабатывает начальные нули, поэтому 005 == 5
.
|
В этом контексте символ трубы является "or-bar". Для оценки этого выражения он имеет более высокий приоритет, чем все остальное, и эффективно объединяет два регулярных выражения вместе. Круглые скобки используются для группировки нескольких выражений, разделенных символами or-bars.
И вторая часть:
0+\.[0-9]*[1-9][0-9]*
Это соответствует любому числу, начинающемуся с одного или нескольких символов 0
(замените +
на *
на нуль или более нулей, т.е. .25
), за которым следует период, за которым следует строка цифр который включает по крайней мере один, который не является 0
. Таким образом, это соответствует всем выше 0
и ниже 1
.
)$
И, наконец, мы закрываем круглые скобки и привязываем регулярное выражение к концу строки знаком доллара, точно так же, как каретка привязывается к началу строки.
Конечно, если вы позволите своему языку программирования оценивать что-то численно, а не пытаться сопоставить его с регулярным выражением, вы сохраните головные боли и процессор.
Как насчет этого: ^[1-9][0-9]*$
код:
^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]+\.[0-9]*[1-9][0-9]*)$
Пример: http://regexr.com/3anf5
там вы идете:
MatchCollection myMatches = Regex.Matches(yourstring, @"[1-9][0-9]*");
on submit:
if(myMatches.Count > 0)
{
//do whatever you want
}
Я пробовал это, и он работал у меня для всех десятичных/целых чисел больше нуля
Позволяет пробелу: ^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$
Нет пробела: ^(?=.*[1-9])\d*(?:\.\d{1,2})?$
Если вам нужны только целые неотрицательные числа, попробуйте:
^\d+$
Я думаю, что лучшим решением является добавление знака + между двумя скобками выражения регулярного выражения:
^[1-9]+[0-9]*$
Вы можете использовать следующее выражение:
(^\d*\.?\d*[1-9]+\d*$)|(^[1-9]+\.?\d*$)
Допустимые значения: 1 1. 1.1 1.0 все положительные действительные числа
Недействительные записи: все отрицательные действительные числа и 0 и 0.0
Простой ответ: ^[1-9][0-9]*$
Я думаю, что это отлично работает:
([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])
Действителен:
1
1.2
1.02
0.1
0.02
Недействительно:
0
01
01.2
1.10
[1-9]\.\d{1,2}|0\.((0?[1-9])|([1-9]0?)){1,2}\b
^\$? ([1-9] {1} [0-9] {0,2} (\, [0-9] {3}) * (. [0-9] {0,2 }) |? [1-9] {1} [0-9] {0} ([0-9] {0,2}) |.?. 0 ([0-9] {0,2})? | (. [0-9] {1,2})?) $
Очень простой ответ на этот вопрос:\d *