Regex pour tout remplacer sauf les nombres et un point décimal


113

J'ai un champ de texte qui ne doit rester que du texte ou des nombres décimaux. Voici le code que j'utilise actuellement pour tout remplacer, sauf les nombres et un point décimal. Le problème est que je ne peux pas trouver une regex qui identifiera tout le reste

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

Le \ D fonctionne bien, mais j'ai essayé (?!.), (?!\.), [^.], [^\.]et ainsi de suite ...

Des suggestions pour une expression régulière qui s'identifie positivement avec autre chose qu'un nombre ou une décimale?

Merci pour l'aide


au cas où vous cherchez à vérifier les nombres réels plutôt que les chiffres numériques: stackoverflow.com/questions/42328875
...

Réponses:


239

Utilisez ceci:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugo cela ne permet rien, vous ne devez tout simplement pas passer une chaîne qui pourrait potentiellement contenir plus de décimales et la pré-traiter en premier. C'est comme dire que la chaîne autorise tous les caractères ...
jave.web

3
Exécutez ensuite la valeur renvoyée via parseFloat. Cela supprimera les points décimaux supplémentaires. par exempleparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon

1
C'est génial pour convertir des nombres déjà formatés comme de l'argent en un flottant calculable.
lu1s

8

La suppression uniquement de la partie décimale peut être effectuée comme suit:

number.replace(/(\.\d+)+/,'');

Cela convertirait 13,6667px en 13px (laissant les unités px intactes).


7

Essaye ça:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
meilleure réponse. Supprime 0,000 10,000000 0,22 2,234, mais conserve 1, 10, 10,1, 10,22
Robert Baker

Cette expression semble compliquée, pouvez-vous expliquer comment cela fonctionne ou ce que cela supprimerait exactement?
Minderov le

Cela ne fonctionne pas avec une entrée cyrillique telle que «5.12 руб».
Minderov le

4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - résultat chaîne vide
yAnTar

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.