web-dev-qa-db-fra.com

Comment trouver un numéro dans une chaîne en utilisant JavaScript?

Supposons que j'ai une chaîne du type "- vous pouvez entrer 500 choix au maximum" . Je dois extraire 500 de la chaîne.

Le problème principal est que la chaîne peut varier comme "vous pouvez entrer au maximum 12500 choix" . Alors, comment obtenir la partie entière?

40
Devi

Utilisez un expression régulière .

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

L'expression \d+ signifie "un ou plusieurs chiffres". Les expressions régulières par défaut sont gourmandes _, ce qui signifie qu'elles captureront le plus possible. En outre, ceci:

var r = /\d+/;

est équivalent à:

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

Voir le détails de l'objet RegExp .

Ce qui précède prendra le groupe de chiffres premier. Vous pouvez aussi parcourir et trouver tous les résultats:

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

L'indicateur g (global) est la clé pour que cette boucle fonctionne.

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);


Références:

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

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

12
jesterjunk

J'aime @jesterjunk answer, Cependant, un nombre ne correspond pas toujours à des chiffres. Considérez ces nombres valides: "123.5, 123.567.789, 12233234 + E12"

Je viens donc de mettre à jour l'expression régulière:

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

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