2011-10-10 14 views
5

Potrzebuję wyrażenia regularnego w javascript, które będzie akceptowało tylko liczby dodatnie i dziesiętne. To jest to, co mam, ale coś jest nie tak - nie wydaje się, aby przyjmowało pojedyncze pozytywne cyfry. Na przykład 9 nie będzie działać. Jak mogę to zrestrukturyzować, więc jeśli istnieje co najmniej jedna cyfra dodatnia, będzie działać?Wyrażenie regularne do akceptowania tylko liczb dodatnich i liczb dziesiętnych

+0

Ponieważ każda klasa [0-9] zawiera znak +, cyfry bez znaków dziesiętnych muszą mieć co najmniej dwie cyfry. –

Odpowiedz

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

mecze

0 
+0 
1. 
1.5 
.5 

ale nie

. 
1..5 
1.2.3 
-1 

EDIT:

Aby obsłużyć notacji naukowej (1e6), może chcesz zrobić

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

Jeśli chcesz numerów ściśle pozytywne, nie zero, można zrobić

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

Tak, ten jest całkiem niezły .. Nie może znaleźć żadnych problemów. –

+0

@MikeChristensen, to nie obsługuje notacji naukowej, ale możesz uderzyć opcjonalne '[eE] [+ -]? [0-9] +' przed '$', aby sobie z tym poradzić. –

1

Istnieje kilka różnych sposobów, aby to zrobić w zależności od potrzeb:

/^[0-9.]+$/ meczów 1 i 1.1 ale nie -1

/^[0-9]+\.[0-9]+$/ mecze 1.1 ale nie 1 lub -1

Generalnie polecam korzystania prosty przewodnik do wyrażenia regularnego, taki jak http://www.regular-expressions.info/ dla budowania wyrażeń, a następnie przetestuj je za pomocą java skrypt prawo konsola przeglądarka:

"123.45".match(/^[0-9.]+$/)

+0

To również będzie zawierać "..." i tak dalej. – NT3RP

+0

To prawda - wydawało się, że pytanie było szersze, zanim zostało zmienione. –

1

Jak o jak:

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

Czy to też nie pasuje do rzeczy takich jak '.0.0'? – NT3RP

+0

Tak, to jest jeden problem .. Myślę, że użycie "lub" jest najlepszym wyborem .. –

0

Można spróbować to -

^\d{0,10}(\.\d{0,2})?$ 

Również jedna fajna strona do przetestowania, a także opis własnych wyrażeń regularnych. https://regex101.com/

Powiązane problemy