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?
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.
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
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
var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"
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);