Regex, um alles außer Zahlen und einem Dezimalpunkt zu ersetzen


113

Ich habe ein Textfeld, das nur Text oder Dezimalzahl bleiben muss. Hier ist der Code, den ich derzeit verwende, um alles außer Zahlen und einem Dezimalpunkt zu ersetzen. Das Problem ist, ich kann keinen regulären Ausdruck finden, der alles andere identifiziert

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

Das \ D funktioniert gut, aber ich habe es versucht (?!.), (?!\.), [^.], [^\.]und so weiter ...

Irgendwelche Vorschläge für einen regulären Ausdruck, der sich positiv mit etwas anderem als einer Zahl oder einer Dezimalstelle identifiziert?

Danke für die Hilfe


für den Fall, dass Sie nach tatsächlichen Zahlen anstatt nach numerischen Ziffern suchen
möchten

Antworten:


238

Benutze das:

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

1
@Hugo dies erlaubt nichts, Sie sollten einfach keine Zeichenfolge übergeben, die möglicherweise mehr Dezimalstellen enthalten könnte, und diese zuerst vorverarbeiten. Es ist, als würde man sagen, dass eine Zeichenfolge jedes Zeichen zulässt ...
jave.web

3
Führen Sie dann den zurückgegebenen Wert über parseFloat aus. Dadurch werden zusätzliche Dezimalstellen entfernt. zBparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon

1
Dies ist großartig, um bereits formatierte Zahlen wie Geld in einen berechenbaren Float umzuwandeln.
lu1s

8

Das Entfernen nur des Dezimalteils kann wie folgt erfolgen:

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

Dies würde 13.6667px in 13px umwandeln (Einheiten px bleiben unberührt).


7

Versuche dies:

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


2
beste Antwort. Entfernt 0,000 10.000000 .22 2.234, behält aber 1, 10, 10.1, 10.22
Robert Baker

Dieser Ausdruck sieht kompliziert aus. Können Sie erklären, wie er funktioniert oder was genau er entfernen würde?
Minderov

Dies funktioniert nicht mit kyrillischen Eingaben wie "5.12 руб".
Minderov

4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - Ergebnis leere Zeichenfolge
yAnTar

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.