Rozważ scenariusz inny niż DOM, w którym chcesz usunąć wszystkie znaki nienumeryczne z ciągu przy użyciu JavaScript / ECMAScript. Wszelkie postacie znajdujące się w zasięgu 0 - 9
powinny zostać zachowane.
var myString = 'abc123.8<blah>';
//desired output is 1238
Jak osiągnąłbyś to w zwykłym JavaScript? Pamiętaj, że jest to scenariusz inny niż DOM, więc jQuery i inne rozwiązania dotyczące zdarzeń przeglądarki i naciśnięcia klawisza nie są odpowiednie.
javascript
string
p.campbell
źródło
źródło
\D
?replace
pracę z taką składnią we wszystkich przeglądarkach? wygląda na to, że pamiętam, że dostałemobject has no method 'replace'
starszą wersję IE, kiedy korzystałem z tego tekstu z jQuery ... lub coś takiego.Jeśli potrzebujesz tego, aby pozostawić kropkę dla liczb zmiennoprzecinkowych, użyj tego
źródło
"aaa 2.9px of bbb.".replace(/[^\d.-]/g, '')
→2.9.
Powinien usunąć dowolny ciąg-
(ujemnej) liczby przypadków :)parseFloat("-1234.5.50 €".replace(/[^\d.-]/g, ''))
Użyj wyrażenia regularnego, jeśli implementacja skryptu je obsługuje. Coś jak:
źródło
Możesz użyć RegExp, aby zastąpić wszystkie znaki inne niż cyfry:
źródło
Coś w stylu:
źródło
yourString = yourString.replace ( /[^0-9.]/g, '' );
próbować
Pokaż fragment kodu
źródło
W Angular / Ionic / VueJS - właśnie wymyśliłem prostą metodę:
Użycie w widoku:
źródło
Niestety żadna z powyższych odpowiedzi nie działała dla mnie.
Chciałem konwertować numery walut z ciągów takich jak
$123,232,122.11
(1232332122.11) lubUSD 123,122.892
(123122.892) lub dowolnej innej waluty, takiej jak₹ 98,79,112.50
(9879112.5), aby uzyskać wynik liczbowy, w tym wskaźnik dziesiętny.Musiałem zrobić własne wyrażenie regularne, które wygląda mniej więcej tak:
źródło
Krótka funkcja do usuwania wszystkich znaków nienumerycznych, ale zachowująca liczbę dziesiętną (i zwraca liczbę):
źródło
jesteśmy w 2017 roku, teraz możesz także używać ES2016
lub
Wynik to
źródło