2009-09-14 13 views
6

Czy istnieje wyrażenie regularne, które sprawdzi poprawność wartości procentowej do 2 miejsc po przecinku?Jak potwierdzić procent do dwóch miejsc po przecinku za pomocą Regeksu?

Mam wyrażenie regularne z dwoma miejscami dziesiętnymi, ale nie wiem, jak zatrzymać wartości powyżej 100. 100.01 jest sprawdzany z moim regex.

+1

FWIW - parsować obraz do postaci zmiennoprzecinkowej/podwójnej w dowolnym języku, którego używasz, i zatwierdzić '0 <= x <= 100'. Regex nie jest właściwym młotkiem dla tego gwóźdź IMHO. –

+0

Kiedy powiedziałem "obraz", miałem na myśli "procent". Przepraszam. –

+0

Używam wyrażenie regularne datannotation do zastosowania sprawdzania poprawności w aplikacji mvc. – littlechris

Odpowiedz

9

W Perl:

/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1, ? 2})) $/

lub można po prostu dodać dodatkowy jeśli porównując 100 dokładnie :)

+1

Ładnie wykonane. Działa z moimi przypadkami testowymi ... http://regexhero.net/tester/?id=6807190b-cc82-4dd4-8864-05ce8c0c3b4f –

+0

Wygląda na to, że działa na podanym linku, ale może sprawić, że zadziała w mojej aplikacji . ASP.Net MVC vlaidation przy użyciu adnotacji danych: [Zwykła ekspresja (@ "/ (^ 100 ([.] 0 {1,2})?) $ | (^ \ D {1,2} ([.] \ D {1,2})?) $/")] – littlechris

+0

Yo może to zmienić dla lepszej wydajności. Dwie części przed i po | udostępnij początkowy prefiks i przyrostek, i obejmuje znaki^i $. Tworząc wspólne części, zmniejszasz konieczność cofania, gdy część nie pasuje. – MSalters

0

Spróbuj tego:

\d{1,2}\.\d{2} 

to daje jeden cyfra lub dwie cyfry liczba, a następnie dokładność dwa miejsca po przecinku. Jeśli chcesz, aby umożliwić dziesiątych, jak również (ala 10,1), a następnie spróbuj tego:

\d{1,2}\.\d{1,2} 
+0

Zawsze nienawidziłem w 100%. ;) –

+1

To rozwiązanie pomija wartość "100" lub "100,00". –

+0

Durr, ciągle czytałem, że OP nie chciał 100,00. No cóż, może innym razem ... –

0

/^(?:100(?:.0(?:0)?)?|\d{1,2} (?. \ d {1,2})) $/

Działa z:

  • 100,0
  • 100,00
  • 99,99
  • 0,01

itp

0

Spróbuj jeden (przyjmuje pomiędzy 0 i 100, w tym 0,00 & 100.00:

^(100\.00|100\.0|100)|([0-9]{1,2}){0,1}(\.[0-9]{1,2}){0,1}$ 
1

umożliwia to, że wszystkie procenty wyjątkiem zera.

^[1-9]{1}[0-9]?(?:\.\d{1,2})?$|^0\.\d{1,2}?$|100 
+0

Powinieneś dodać^100 $ zamiast 100 na końcu wyrażenia, w przeciwnym razie wszystko, co zawiera 100, zostanie uznane za ważne, np. 100 s.23 – Fjut

Powiązane problemy