191 Stimmen

Regex mit Javascript, um nur Zahlen zurückzugeben

Wenn ich eine Zeichenfolge wie "etwas12" oder "etwas102" habe, wie würde ich eine Regex in Javascript verwenden, um nur die Zahl Teile zurück?

303voto

meder omuraliev Punkte 177513

Reguläre Ausdrücke:

var numberPattern = /\d+/g;

'something102asdfkj1948948'.match( numberPattern )

Dies würde ein Array mit zwei Elementen zurückgeben, nämlich '102' und '1948948'. Operieren Sie, wie Sie wollen. Wenn es keine Übereinstimmung gibt, wird null zurückgegeben.

Um sie zu verketten:

'something102asdfkj1948948'.match( numberPattern ).join('')

Vorausgesetzt, Sie haben es nicht mit komplexen Dezimalzahlen zu tun, sollte dies ausreichen.

4 Stimmen

Err. hasse es, pingelig zu sein, aber dies gibt ein Array, nicht ein Objekt (zumindest in Chrome).

18 Stimmen

Alle Arrays sind jedoch Objekte, oder?

1 Stimmen

Wie wäre es mit parseInt(string);

234voto

Christian C. Salvadó Punkte 763569

Sie können auch alle nicht-ziffrigen Zeichen entfernen ( \D o [^0-9] ) :

let word_With_Numbers = 'abc123c def4567hij89'
let word_Without_Numbers = word_With_Numbers.replace(/\D/g, '');

console.log(word_Without_Numbers)

2 Stimmen

Nun, außer, dass der Auftraggeber "nur die Zahlenteile" und nicht die Zeichenkette haben möchte.

0 Stimmen

@ScottFraley beachten Sie, dass dieser Code die replace Methode, nicht die match Methode ;)

51voto

Chen Dachao Punkte 1466

Für Zahlen mit Dezimalbruch und Minuszeichen verwende ich dieses Snippet:

const NUMERIC_REGEXP = /[-]{0,1}[\d]*[.]{0,1}[\d]+/g;

const numbers = '2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP)

console.log(numbers); // ["2.2", "3.1", "4", "-7.6"]

Aktualisierung: - 7/9/2018

Ich habe ein Tool gefunden, mit dem Sie reguläre Ausdrücke visuell bearbeiten können: *[JavaScript Regular Expression Parser & Visualisierer](https://jex.im/regulex/#!embed=false&flags=&re=%5E(a%7Cb)%3F%24)** .

Aktualisierung:

Hier ist eine weitere, mit der Sie sogar Debugger regexp können: Online-Regex-Tester und -Debugger .

Aktualisierung:

Eine andere: RegExr .

Aktualisierung:

Regexper y Regex Pal .

1 Stimmen

Perfekt, einzige Lösung, die mit Dezimalzahlen und negativen Zahlen funktioniert

19voto

Iván Martínez Punkte 181

Wenn Sie nur Ziffern wollen:

var value = '675-805-714';
var numberPattern = /\d+/g;
value = value.match( numberPattern ).join([]);
alert(value);
//Show: 675805714

Jetzt bekommen Sie die Ziffern zusammen

11voto

Andrew Moore Punkte 90339

Ich vermute, dass Sie die Nummer(n) aus der Zeichenkette abrufen wollen. In diesem Fall können Sie das Folgende verwenden:

// Returns an array of numbers located in the string
function get_numbers(input) {
    return input.match(/[0-9]+/g);
}

var first_test = get_numbers('something102');
var second_test = get_numbers('something102or12');
var third_test = get_numbers('no numbers here!');

alert(first_test); // [102]
alert(second_test); // [102,12]
alert(third_test); // null

1 Stimmen

Nur um das klarzustellen, get_numbers/1 gibt ein Array mit einer Zeichenkette zurück, keine Zahl. Für Ihr Beispiel würde es zurückgeben: * ["102"] * ["102", "12"] * null

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