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 -
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 :
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 :)
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:
- Regexp, caractére autorisé (interdit?) et compagnie
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Caractere vide - Guide
2 réponses
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)
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.
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.
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)