2015-06-11 11 views
5

Muszę zweryfikować pole Kwota, które nie powinno być zerową kwotą. Na przykład to NIE MOŻE być 0000,0.00,000.000,0 ale CAN być 0,0001, 1.000,1.00,1234.00 itp wartości.Wyrażenie regularne w celu sprawdzenia, czy ciąg zawiera tylko zera

Próbowałem @"[^1-9]+" i @"0+((\.0+)" Ale unieważniają każdą wartość zawierającą zero.

+2

Dlaczego nie można po prostu przekonwertować ciąg znaków na liczbę i sprawdzenie jeśli jest 0? –

+0

Zakładam, że będziesz musiał później użyć tej ilości, więc sprawdzenie, czy liczba jest równa 0, byłoby znacznie lepszym rozwiązaniem. – Sayse

+0

Spróbuj przetworzyć ciąg. Jeśli analizowanie zakończy się powodzeniem, pomnóż go pewną liczbą, jeśli otrzymasz zero, ma tylko zera. Najprostsze rozwiązanie;) –

Odpowiedz

8

Nie widzę, dlaczego trzeba regex, wystarczy przekonwertować ciąg znaków na liczbę i sprawdzić, czy to jest 0:

decimal actNumber; 
if(decimal.TryParse(myAmount, out actNumber) && actNumber > 0) 
{ /* ... */ } 

W ten sposób można również użyć rzeczywistej liczby później.

+0

Dzięki HimBromBeere, to działało dla mnie. – mukulsharma1146

1
^(?=.*?[1-9])\d+(\.\d+)?$ 

Można użyć prostego lookahead dla tego, który zweryfikuje, czy istnieje przynajmniej jeden [1-9].

+0

ya, poprawne .. .. .. Happy, rep polowanie .. :-) –

1

Jeśli chcesz, aby wyrażenie regularne sprawdzało ciągi zawierające tylko jeden znak, możesz po prostu określić, że znak znajduje się na początku, końcu i wszędzie pomiędzy. Oto przykład, jak to zrobić dla cyfry 0:

regexp '^ [0] [0] * [0] $'

+0

Na jakie pytanie odpowiadasz? – Toto

+0

Nie jestem OP, ale chciałbym podziękować za późno, nawet o tym nie pomyślałem. Bardzo mi pomogło. – LargeCrimsonFish

Powiązane problemy