Erreur de synthaxe fonction RegExp ? [Résolu]

Signaler
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012
-
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012
-
Bonjour,

Après plusieurs essais infructueux, j'aimerais demander conseils à la communauté.
Je cherche à faire une fonction qui vérifie les champs d'un formulaire, j'utilise un regex pour savoir si un champ contient que des nombres avec un maximum de 9 nombres, si oui la fonction renvoi true sinon false.
Malheureusement, pour une raison que j'ignore, il ne me renvoi que false.

function isNumber(elem){ //fonction pour verif si nombre

ExpReg = new RegExp("/^\d{1,9}$/g");
var bonnb = ExpReg.test(elem.value);
return bonnb;
}

Mais ou est mon erreur?
Merci

4 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
peux être pas besoin de RegExp
tu peut tester si la chaine is No Numeric avec la fonction isNaN, et tester la longueur de la chaine
//------------------
function Test( txt_){
  if( !isNaN( txt_)){
    if( txt_.length < 10)
      return( true);
  }
  return( false);
}

mais avec une RegExp c'est à priori faisable
var szReg = new RegExp("^[0-9]{2,9} *$","g");

à tester comme il faut quand même


;O)
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Bonjour,

Tout d'abord, merci pour ton aide.
J'ai essayé les 2 codes que tu m'as proposé mais ça ne fonctionne pas non plus.
Pourtant, je ne vois aucune raison que ça ne fonctionne pas :-/

J'ai verifié toutes les valeurs que j'utilise, et rien à faire c au nv du test que ça ne fonctionne pas (sniff).
Je mets le nouveau code avec la fonction qui appelle cette fonction, p-e que ça t'aidera.

function isNumber(elem){ //fonction pour verif structure NBR
if(!isNaN( elem.value)){
if( elem.value.length < 10)
return( true);
}
return false;
}

//vérifie tout les champs d'un formulaire (ici les champs requis et les nombres)
function verifField(zone){ //zone == document.forms['form']
for(var i=0;i<zone.length;i++){
var id = zone.elements[i].id;//l'id comprend "req" pour requis "nbr" pour nombre
tabid = id.split("_"); //c 'est mots clés sont séparés par un "_"
if(zone.elements[i].value==""){
if(tabid[tabid.length-3]=="req"){ //verifie champs requis
zone.elements[i].style.border = '2px solid red';
}
}
else{
if(tabid[tabid.length-2]=="nbr"){
if(!isNumber(zone.elements[i].value))
alert("no good");
}
}

Merci.
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Sorry, j'ai oublié de mettre ça dans des balises code du site. ça sera qd même plus clair

function isNumber(elem){ //fonction pour verif structure NBR
  if(!isNaN( elem.value)){
    if( elem.value.length < 10)
       return( true);
  }
  return false;
}

//vérifie tout les champs d'un formulaire (ici les champs requis et les nombres)
function verifField(zone){ //zone == document.forms['form']
  for(var i=0;i<zone.length;i++){
    var id = zone.elements[i].id;//l'id comprend "req" pour requis "nbr" pour nombre
    tabid = id.split("_"); //c 'est mots clés sont séparés par un "_"
    if(zone.elements[i].value==""){
      if(tabid[tabid.length-3]=="req"){ //verifie champs requis
        zone.elements[i].style.border = '2px solid red';
      }
    }
    else{
      if(tabid[tabid.length-2]=="nbr"){
         if(!isNumber(zone.elements[i].value))
           alert("no good");
      }
    } 
  }
}
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Ok, sorry... je me suis perdu dans mon code et j'ai mis dans la 1ère fonction isNumber(zone.elements[i].value) et dans la fonction isNumber(elem) j'appelle elem.value dans le la fonction test...
Ce qui donnerai zone.elements[i].value.value :-/
C un peu bidon... double sorry
Je vais mettre cette question comme résolu puisque de tout façon mon regex était pas bon et que tu m'en a donné un sympa ;)

Merci encore