Cela marche:
var.replace(/[^0-9]+/g, '');
Ce simple extrait remplacera tout ce qui n’est pas un nombre avec rien.
Mais les nombres décimaux sont également réels. Donc, j'essaie de comprendre comment inclure une période.
Je suis sûr que c'est très simple, mais mes tests ne fonctionnent pas.
Avez-vous échappé à la période? var.replace(/[^0-9\.]+/g, '');
Remplacer quelque chose qui n'est pas un nombre est un peu plus compliqué que de remplacer quelque chose qui est un nombre.
Ceux qui suggèrent d'ajouter simplement le point ignorent le fait que. est également utilisé comme période, donc:
This is a test. 0.9, 1, 2, 3
deviendra .0.9123
.
La regex spécifique à votre problème dépendra beaucoup du but recherché. Si vous n'avez qu'un seul numéro dans votre chaîne, vous pouvez faire ceci:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
Cela trouve le premier numéro et remplace la chaîne entière par le numéro correspondant.
Essaye ça:
var.replace(/[^0-9\\.]+/g, '');
Essaye ça:
var.replace(/[0-9]*\.?[0-9]+/g, '');
Cela correspond uniquement aux décimales valides (par exemple, "1", "1.0", ".5", mais pas "1.0.22")
Si vous ne voulez pas attraper l'adresse IP avec des décimales:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
Ce qui n'accroche que des chiffres avec une ou zéro période
Pourquoi ne pas faire ceci:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
il y a déjà beaucoup de réponses correctes, soulignant simplement que vous devrez peut-être aussi prendre en compte les signes négatifs. "\-"
ajoutez cela à toute réponse existante pour permettre les nombres négatifs.
Voici quelques types de classes d’entrée jQuery que j’utilise:
$("input.intgr").keyup(function (e) { // Filter non-digits from input value.
if (/\D/g.test($(this).val())) $(this).val($(this).val().replace(/\D/g, ''));
});
$("input.nmbr").keyup(function (e) { // Filter non-numeric from input value.
var tVal=$(this).val();
if (tVal!="" && isNaN(tVal)){
tVal=(tVal.substr(0,1).replace(/[^0-9\.\-]/, '')+tVal.substr(1).replace(/[^0-9\.]/, ''));
var raVal=tVal.split(".")
if(raVal.length>2)
tVal=raVal[0]+"."+raVal.slice(1).join("");
$(this).val(tVal);
}
});
intgr n'autorise que les solutions numériques - comme ici.
nmbr n'autorise que les décimales positives/négatives. Le négatif doit être le premier caractère (vous pouvez ajouter "+" au filtre si vous en avez besoin), enlève -3.6.23.333
à -3.623333
Je mets nmbr up parce que j'en avais marre d'essayer de trouver le moyen de ne garder que 1 décimale et négatif en 1ère position
Doux et court remplacement en ligne des caractères non numériques dans la zone de texte ASP.Net:
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
Modifiez la partie regex comme vous le souhaitez. Beaucoup de gens se plaignent du fait que le curseur va droit au but en utilisant les touches fléchées, mais les gens ont tendance à gérer cela sans s'en rendre compte, par exemple, flèche ... flèche ... flèche ... flèche ... d'accord alors ... backspace back space, entrez les nouveaux caractères.