Chcę sprawdzić, czy string
zawiera tylko cyfry. Użyłem tego:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
Ale zdałem sobie sprawę, że to pozwala +
i -
. Zasadniczo chcę się upewnić, że input
zawiera TYLKO cyfry i nie ma innych znaków. Ponieważ +100
i -5
oba są liczbami, isNaN()
nie jest to właściwa droga. Być może potrzebuję wyrażenia regularnego? Jakieś wskazówki?
javascript
numbers
digits
patad
źródło
źródło
\d
jest dokładnie równoważny z[0-9]
.Regular Expressions
działa/^\d*$/
zamiast tego , jeśli znajdziesz pusty ciąg zawierający tylko cyfry .źródło
źródło
isNumber = () => /^\d+$/.test(this);
zamiast tego i użyj jakoconsole.log(isNumber("123123));
Jeśli chcesz nawet obsługiwać wartości zmiennoprzecinkowe (wartości rozdzielane kropkami), możesz użyć tego wyrażenia:
źródło
\d+
na\d*?
, będzie mógł dopasować 0 - 9, a także liczby takie jak .333var isNumber = /^\d*\.?\d+$/.test(value)
- pasuje do „3.5”, „.5”, „3” - nie pasuje do „3.”Oto kolejny ciekawy, czytelny sposób sprawdzenia, czy łańcuch zawiera tylko cyfry.
Ta metoda działa poprzez podzielenie łańcucha na tablicę za pomocą operatora rozkładania , a następnie używa
every()
metody do sprawdzenia, czy wszystkie elementy (znaki) w tablicy są zawarte w ciągu cyfr'0123456789'
:źródło
true
pusty ciąg''
i pustą tablicę[]
, tablicę liczb całkowitych[1, 2, 3]
(gdy będą miały <10)./^\d+$/
Myślę, że jest bardziej podatny na błędy / niewłaściwe użycie niż podstawowe wyrażenie regularneTo jest to, czego chcesz
źródło
Oto rozwiązanie bez użycia wyrażeń regularnych:
gdzie 48 i 57 to kody znaków odpowiednio dla „0” i „9”.
źródło
Chociaż zwróci to
false
ciągi z wiodącymi lub końcowymi zerami.źródło
Cóż, możesz użyć następującego wyrażenia regularnego:
źródło
jeśli chcesz dołączyć wartości zmiennoprzecinkowe, możesz także użyć następującego kodu
spowoduje to sprawdzenie tylko cyfr i cyfr oddzielonych znakiem „.” pierwszy test obejmie wartości takie jak 0,1 i 0, ale również .1, nie pozwoli na 0. więc rozwiązaniem, które proponuję, jest odwrócenie wartości, więc .1 będzie 1. wtedy to samo wyrażenie regularne na to nie pozwoli.
przykład:
źródło
Jeśli ciąg zawiera tylko cyfry, zwróci null
źródło