Regexp, caractére autorisé (interdit?) et compagnie

Résolu
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -  
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai pompé ce script sur internet (ou le vilain pas beau), et malheureusement je n'arrive pas à le faire fonctionner comme je le souhaite :


function verif_nombre(champ)
{
var chiffres = new RegExp("[0-9]");
var verif;
var points = 0;

for(x = 0; x < champ.value.length; x++)
{
verif = chiffres.test(champ.value.charAt(x));
if(champ.value.charAt(x) == "."){points++;}
if(points > 1){verif = false; points = 1;}
if(verif == false){champ.value = champ.value.substr(0,x) + champ.value.substr(x+1,champ.value.length-x+1); x--;}
}
}


Dans le formulaire, il y a un "onkeyup='verif_nombre(this)'";

Alors lorsque je rentre un chiffre, il apparait bien,
lorsque je rentre un caractère alphabétique, il est bien supprimé.

SEULEMENT, lorsque je rentre un point ou une virgule, ils sont également supprimé. J'ai bien essayer de bidouiller le RegExp mais le seul résultat que j'ai obtenu et que plus rien ne fonctionne.

En soit, il s'agit d'un champ qui doit contenir un nombre entier/décimal.

Si par ailleurs vous pouvez m'éclairer sur le fonctionnement du regexp, parce que tout les tutos, forum qui en traite ne sont pas super clair (y compris celui du site du zéro sur les expressions régulière)

Vaut mieux t il interdire ou autorisé des caractères ?

Merci par avance de votre aide :)


A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

testes avec cette REGEX :
var chiffres = new RegExp("^-?\+?\d*(\.\d+)?$");

1
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
Merci de votre réponse, malheureusement, ça ne fonctionne pas.
Aucun caractère n'est échappé et j'obtiens dans la console ->
SyntaxError: nothing to repeat

var chiffres = new RegExp("^-?\+?\d*(\.\d+)?$");

Après, c'est ptétre la fonction qui est bancale :S

(comment vous faites pour que votre code soit coloré? Moi aussi je veux être SWAG :D)
0
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
Bon, après de longues heures de décorticage de code, je me suis aperçu que le script était à la base utilisé pour vérifier un champ (c'est juste pas marquer en gros dans la fonction).

Qu'il vérifiait un a un tous les caractères de ce champ (pas super utile dans mon cas, faudra que je bidouille) et qu'il supprimé les caractères non voulu.

J'ai donc eu l'idée de rechercher cette fameuse fonction verif_nombre(champ) sur google et en passant de forum en forum j'ai finalement pu trouver la fonction original :
(il faut suivre les commentaires pour obtenir des nombres entier)

function verif_nombre(champ)
{
var chiffres = new RegExp("[0-9\.]"); /* Modifier pour : var chiffres = new RegExp("[0-9]"); */
var verif;
var points = 0; /* Supprimer cette ligne */

for(x = 0; x < champ.value.length; x++)
{
verif = chiffres.test(champ.value.charAt(x));
if(champ.value.charAt(x) == "."){points++;} /* Supprimer cette ligne */
if(points > 1){verif = false; points = 1;} /* Supprimer cette ligne */
if(verif == false){champ.value = champ.value.substr(0,x) + champ.value.substr(x+1,champ.value.length-x+1); x--;}
}

}



Merci encore de votre aide !!

N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
0