Quel sera le meilleur moyen d'utiliser l'expression régulière JavaScript pour obtenir des chiffres du texte .. E.g .... J'ai "4 320 $ Texte / suivant" et je veux obtenir 4320 de cela. Cependant, je veux éviter les chiffres après la première occourance d'un alphabet ou tout autre alphabet autre qu'une virgule ','
de sorte que si je dispose de 4 320 $ T234ext / suivant, cela me retournera toujours 4320. L'entrée aura toujours du signe $ au début p>
de sorte que l'expression régulière doit renvoyer p>
4 Réponses :
string.split(/ /)[0].replace(/[^\d]/g, '')
Pouvez-vous me procurer un peu plus d'informations sur l'expression régulière ci-dessus ... Je ne peux pas expliquer à quel point je suis facilement confondre dans des expressions régulières ...
Je recommanderais de commencer par (string || "0 0") code>.
@ZOOM: Il se divise sur un espace, prend le premier élément de la matrice résultante et supprime tous les non-chiffres de celui-ci. chaîne code> est votre chaîne de sujet.
function parseNumber(input) {
var r = "", i = 0, c = "", s = input + " ";
if (s.charAt(0) === "$") {
i++;
}
while (i < s.length) {
c = s.charAt(i++);
if (c < "0" || c > "9") {
if (c === ",") {
continue;
}
break;
}
r += c;
}
return r;
}
La question mentionne que le programmeur recherche une solution javascript expressions régulières i>.
L'expression régulière plus simple que vous êtes la peut em> recherche est :.. p> \ D code> (tout caractère qui est pas un chiffre Il y a un peu de ces "niés" expressions -. \ d code> correspond à un chiffre, \ D code> correspond non-chiffres. \ w code> correspond à caractères "mot" (alphanumériques ainsi que le soulignement), \ W code> correspond non numérique \ s code> matchs espaces, \ s code> correspond aux caractères non-blancs) number = parseFloat(str.replace(/,/g,'').replace(/^[^-0-9]*/,''));
Je vais tester cela dans un instant mais je pense que cela me donnerait même des chiffres qui se produisent après le premier alphabet ... SO 4 320 $ T778ext / Folowme me donnerait 432077?
C'est vrai. Si WhitSpace marque la fin du nombre, vous pourriez alors changer cette dernière expression régulière à [^ -. 0-9] ou même [^ -. 0-9 \ s] si vous voulez être plus complet. Exécutez cela par Paysfloat ou Paysint et il s'arrêtera au premier espace et vous n'obtiendrez pas les numéros suivants.
Voici une regex légèrement plus compliquée.
2e ligne: il vérifie la version initiale "$" et permet toute combinaison de chiffres (0-9) et de virgules par la suite. P>
3ème ligne: Supprime les avancées et toutes les virgules de la valeur numérique. P>
Je ne sais pas hors main, mais je veux dire que JavaScript prend en charge le regroupement, et il peut être possible de nab à la valeur numérique avec Valises dans la déclaration de match, simplifiant la déclaration de remplacement pour simplement supprimer les virgules. P>
var str="$4,320 t3444ext/followme"; var regex = /^\$([0-9,])*/g; var matchedNum = str.match(regex)[0].replace(/[\$,]/g, '');
Je pense que le premier non chiffre est plus robuste.
est-ce numéros b> ou numéro b> vous voulez du texte?