Jak dopasować również liczby ujemne za pomocą tego wyrażenia regularnego? To wyrażenie regularne działa dobrze z wartościami dodatnimi, ale chcę, aby zezwalało również na wartości ujemne, np. -10, -125,5 itd.
^[0-9]\d*(\.\d+)?$
Dzięki
Jak dopasować również liczby ujemne za pomocą tego wyrażenia regularnego? To wyrażenie regularne działa dobrze z wartościami dodatnimi, ale chcę, aby zezwalało również na wartości ujemne, np. -10, -125,5 itd.
^[0-9]\d*(\.\d+)?$
Dzięki
Odpowiedzi:
Na początku należy dodać opcjonalny łącznik, dodając -?
( ?
jest to kwantyfikator oznaczający jedno lub zero wystąpień ):
^-?[0-9]\d*(\.\d+)?$
Sprawdziłem to w Rubular z tymi wartościami:
10.00
-10.00
i oba dopasowane zgodnie z oczekiwaniami.
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
Niektóre przykłady wyrażeń regularnych:
Dodatnie liczby całkowite :
^\d+$
Ujemne liczby całkowite :
^-\d+$
Liczba całkowita :
^-?\d+$
Liczba dodatnia :
^\d*\.?\d+$
Liczba ujemna :
^-\d*\.?\d+$
Liczba dodatnia lub liczba ujemna :
^-?\d*\.{0,1}\d+$
Numer telefonu :
^\+?[\d\s]{3,}$
Telefon z kodem :
^\+?[\d\s]+\(?[\d\s]{10,}$
Lata 1900-2099 :
^(19|20)[\d]{2,2}$
Data (dd mm rrrr, d / m / rrrr itp.):
^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
IP v4 :
^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
Nie wiem, dlaczego potrzebujesz tego najpierw [0-9]
.
Próbować:
^-?\d*(\.\d+)?$
Aktualizacja
Jeśli chcesz mieć pewność, że będziesz mieć cyfrę na swoim miejscu, użyj
^-?\d+(\.\d+)?$
^-?\d+(\.\d+)?$
powinno działać, jeśli tak jest
AKTUALIZACJA (13/08/2014): To najlepszy kod dla liczb dodatnich i ujemnych =)
(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}
Próbowałem z tymi liczbami i działa dobrze:
-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701
-*
na, -?
ponieważ pasuje -------------
.
Pozwoli to na znak -
lub +
tylko wtedy, gdy nastąpi po nim liczba:
^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
Umożliwi to zarówno dodatnie, jak i ujemne liczby całkowite
ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"
Przeprowadziłem kilka eksperymentów dotyczących wyrażenia regularnego w adresie URL django, które wymagały od liczb ujemnych do dodatnich
^(?P<pid>(\-\d+|\d+))$
Skoncentrujmy się na tej (\-\d+|\d+)
części i ignorując inne, ten średnik |
oznacza OR w wyrażeniu regularnym, wtedy wartość ujemna będzie pasować do tej \-\d+
części, a wartość dodatnia do tego\d+
To zadziałało dla mnie, pozwalając zarówno na liczby ujemne, jak i dodatnie :
\-*\d+
Jeśli używasz C #:
Regex.Match(someString, @"\-*\d+").Value;
Tylko dla liczb ujemnych jest to idealne.
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
akceptuje dodatnie lub ujemne wartości dziesiętne.
Jeśli masz to val="-12XXX.0abc23"
i chcesz wyodrębnić tylko liczbę dziesiętną, w tym przypadku to wyrażenie regularne ( ^-?[0-9]\d*(\.\d+)?$
) nie pomoże ci tego osiągnąć.
to jest właściwy kod z prawidłowym wyrażeniem regularnym wykrywania:
var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);