webentwicklung-frage-antwort-db.com.de

Wie finde ich eine Zahl in einem String mit JavaScript?

Angenommen, ich habe einen String wie - "Sie können maximal 500 Optionen eingeben" . Ich muss 500 aus dem String extrahieren.

Das Hauptproblem ist, dass der String variieren kann wie "Sie können maximal 12500 Auswahlmöglichkeiten eingeben" . Wie erhält man den Ganzzahlteil?

40
Devi

Verwenden Sie ein regulärer Ausdruck .

var r = /\d+/;
var s = "you can enter maximum 500 choices";
alert (s.match(r));

Der Ausdruck \d+ bedeutet "eine oder mehrere Ziffern". Reguläre Ausdrücke sind standardmäßig gierig , dh sie greifen so viel wie möglich an. Auch das:

var r = /\d+/;

ist äquivalent zu:

var r = new RegExp("\d+");

Siehe Details zum RegExp-Objekt .

Das obige wird die first - Zifferngruppe übernehmen. Sie können auch durchgehen und alle Übereinstimmungen finden:

var r = /\d+/g;
var s = "you can enter 333 maximum 500 choices";
var m;
while ((m = r.exec(s)) != null) {
  alert(m[0]);
}

Das Flag g (global) ist der Schlüssel für diese Schleife.

84
cletus

var regex = /\d+/g;
var string = "you can enter maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);


Verweise:

http://www.regular-expressions.info/javascript.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

12
jesterjunk

Ich mag die Antwort von @jesterjunk, Eine Zahl ist jedoch nicht immer nur eine Zahl. Beachten Sie die gültigen Zahlen: "123.5, 123.567.789, 12233234 + E12"

Also habe ich gerade den regulären Ausdruck aktualisiert:

var regex = /[\d|,|.|e|E|\+]+/g;

var string = "you can enter maximum 5,123.6 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches); //5,123.6
5
Dudi
var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"
1
Artem Belik

Sie können dies auch versuchen:

var string = "border-radius:10px 20px 30px 40px";
var numbers = string.match(/\d+/g).map(Number);
console.log(numbers)
0
Tausif Shaikh

var regex = /\d+/g;
var string = "you can enter 30%-20% maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);

0
arvind