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.