2012-03-02 3 views
-3

Я ищу регулярное выражение, которое проверяет только положительные номера.
, например.
0 недействителен.
0.123 действительно.
действительное целое число.
любое отрицательное число недействителенРегулярное выражение для положительных чисел в C#

+4

Что сказал Google? – Mithrandir

+0

Почему 0.123 не положительное число? Похоже, вы хотите найти номера 1 или больше. – SpaceBison

+1

@SpaceBison - Вы прочитали вопрос? 0.123. – Oded

ответ

-1

это может помочь U

положительное число --- ^\d*\.{0,1}\d+$

+0

Это даст вам .123 как способный (это!), Но это не так, как в примере Класса Яна (0.123) – dotoree

2

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

^(?:[1-9]\d*(?:\.\d+)?|0\.0*[1-9]\d*)$ 
+0

+1 для аргумента, регулярное выражение не должно использоваться для разбора чисел. Это инструмент для сопоставления текста. – Aphelion

0

Попробуйте

^(?!-|0(?:\.0*)?$)\d+(?:\.\d+)?$ 

Посмотреть here on Regexr

^ начало строки

(?!-|0(?:\.0*)?$) отрицательное опережения утверждение, терпит неудачу, когда строка начинается с «-» или 0 и 0.0 *, а затем к концу строки.

\d+ матчи по крайней мере одна цифра

(?:\.\d+)? матчи необязательно точка следует, по меньшей мере, один разряд

$ конца строки

+0

Это позволит «0,0000», хотя, по-видимому, OP хочет отклонить так же, как и «0». – LukeH

+0

@ LukeH спасибо, исправлен. – stema

7

Если вы просто пытаетесь подтвердить введенные цифры действительными положительные числа, вам не нужно Regex - просто используйте методы Parse или TryParse, определенные на Double или Decimal, и проверьте, чтобы значение было положительным.

decimal test; 

if(decimal.TryParse(myString, out test)) 
{ 
    // parsed OK, myString is a valid decimal 
    if(test > 0) 
    { 
    // yay, it is positive! 
    } 
} 
+0

Да, сделайте то, что @Oded говорит. В противном случае вы столкнетесь со всякими странными вещами, такими как 007, неположительными, или 00.12 положительными. – zmbq

+0

@zmbq: '00.12' * есть * положительный! И вы не столкнетесь с необычными крайними случаями, если будете осторожны, чтобы правильно писать и проверять свое регулярное выражение. С другой стороны, я согласен на 100%, что ответ Одеда предпочтительнее регулярного выражения (если у ОП нет истинной причины, по которой они должны * использовать регулярное выражение). – LukeH

+0

Ну, верно, это позитивно. Во всяком случае, я пытался сказать, что вам не нужно быть осторожным и осторожным, если вы просто используете код Одеда. – zmbq

Смежные вопросы