Regex, aby zastąpić wszystko oprócz liczb i przecinka dziesiętnego


113

Mam pole tekstowe, w którym musi pozostać tylko tekst lub liczba dziesiętna. Oto kod, którego obecnie używam, aby zastąpić wszystko oprócz liczb i przecinka dziesiętnego. Problem w tym, że nie mogę znaleźć wyrażenia regularnego, które identyfikowałoby wszystko inne

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ D działa dobrze, ale próbowałem (?!.), (?!\.), [^.], [^\.]i tak dalej ...

Jakieś sugestie dotyczące wyrażenia regularnego, które pozytywnie identyfikuje się z czymkolwiek oprócz liczby lub ułamka dziesiętnego?

Dzięki za pomoc


jeśli chcesz sprawdzić rzeczywiste liczby, a nie cyfry: stackoverflow.com/questions/42328875/ ...
cregox

Odpowiedzi:


239

Użyj tego:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugo to na nic nie pozwala, po prostu nie powinieneś przekazywać ciągu, który mógłby potencjalnie zawierać więcej miejsc dziesiętnych i najpierw go wstępnie przetworzyć. To tak, jakby powiedzieć, że łańcuch umożliwia każdemu znakowi ...
jave.web

3
Następnie uruchom zwróconą wartość za pomocą parseFloat. Spowoduje to usunięcie dodatkowych miejsc dziesiętnych. np.parseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon

1
Jest to świetne rozwiązanie do konwersji już sformatowanych liczb, takich jak pieniądze, na obliczalną liczbę zmiennoprzecinkową.
lu1s

8

Usunięcie tylko części dziesiętnej można wykonać w następujący sposób:

number.replace(/(\.\d+)+/,'');

Spowoduje to przekonwertowanie 13,6667 pikseli na 13 pikseli (pozostawiając nietknięte jednostki px).


7

Spróbuj tego:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
najlepsza odpowiedź. Usuwa 0,000 10,000000 0,22 2,234, ale zachowuje 1, 10, 10,1, 10,22
Robert Baker

To wyrażenie wygląda na skomplikowane, czy możesz wyjaśnić, jak to działa lub co dokładnie by usunąć?
Minderov

Nie działa to w przypadku cyrylicy, np. „5,12 rub.”.
Minderov

4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - pusty ciąg
wynikowy

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.