995 Stimmen

Entfernen Sie alle nicht numerischen Zeichen aus einer Zeichenkette in JavaScript

Stellen Sie sich ein Szenario vor, in dem Sie mit JavaScript/ECMAScript alle nicht numerischen Zeichen aus einer Zeichenkette entfernen möchten. Alle Zeichen, die sich im Bereich 0 - 9 aufbewahrt werden sollte.

var myString = 'abc123.8<blah>';

//desired output is 1238

Wie würden Sie dies in einfachem JavaScript erreichen? Bitte denken Sie daran, dass es sich hier um ein Nicht-DOM-Szenario handelt, so dass jQuery und andere Lösungen, die Browser- und Tastendruckereignisse beinhalten, nicht geeignet sind.

33voto

jackosaur Punkte 195

Kurze Funktion zum Entfernen aller nicht numerischen Zeichen, aber Beibehaltung der Dezimalstelle (und Rückgabe der Zahl):

parseNum = str => +str.replace(/[^.\d]/g, '');
let str = 'a1b2c.d3e';
console.log(parseNum(str));

7voto

Debbie Kurth Punkte 337

Das Problem mit den obigen Antworten ist, dass sie von ganzen Zahlen ausgehen. Wenn Sie jedoch einen Fließkommawert benötigen, wird in der vorherigen Zeichenfolge das Dezimalkomma entfernt.

Um dies zu korrigieren, müssen Sie eine negierte Zeichenklasse mit ^

var mystring = mystring.replace(/[^0-9.]/g, '');

4voto

Grant Punkte 4545

In Angular / Ionic / VueJS - Ich kam gerade mit einer einfachen Methode der:

stripNaN(txt: any) {
    return txt.toString().replace(/[^a-zA-Z0-9]/g, "");
}

Verwendung in der Ansicht:

<a [href]="'tel:'+stripNaN(single.meta['phone'])" [innerHTML]="stripNaN(single.meta['phone'])"></a>

3voto

Chaos Legion Punkte 2412

Leider hat keine der obigen Antworten bei mir funktioniert.

Ich war auf der Suche nach einer Konvertierung von Währungszahlen aus Strings wie $123,232,122.11 (1232332122.11) oder USD 123,122.892 (123122.892) oder eine Währung wie 98,79,112.50 (9879112.5), um eine Zahlenausgabe einschließlich des Dezimalzeigers zu erhalten.

Ich musste meine eigene Regex erstellen, die in etwa so aussieht:

str = str.match(/\d|\./g).join('');

2voto

Kamil Kiełczewski Punkte 69048

Versuchen Sie

myString.match(/\d/g).join``

var myString = 'abc123.8<blah>'
console.log( myString.match(/\d/g).join`` );

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X