Regex - javascript

Résolu
Bonjour,
Je suis novice mais pourtant déjà passionnée par javascript, c'est épatant ce qu'il arrive a faire. Je l'utilisa dans mes pages jsp.
Comment vais-je faire le test pour avoir un input qui ne prend que des chiffres,lettres(accentues ou non), le ', le -,et les espaces.
Je crois que c'est un gain de partage,connaissance,et de temps de poster ici.
Merci a vous!

5 réponses

  1. Si c'est un formulaire, avant l'envoi vers le serveur tu va devoir analyser tous les input. Avec les regex ca donne ca :

    var myRe = /[a-zA-Z0-9'-àâéèêîôùû]+/g;
    var myArray = myRe.exec(/*contenu de l'élément*/);

    si la liste myArray est vide alors les données ne correspondent pas.

    Si ce n'est pas un formulaire tu peux réaliser ce test à chaque changement dans tes inputs .
    1. Merci de ta réponse rapide,
      Dans mon formulaire, je n'ai qu'un input texte a vérifier, le reste c'est des nombres et ça marche déjà, alors je veux le faire dans un onChange() de l'input.
      contenu de l'élément ~ document.formulaire.nom.value par exemple?
      Peux-tu m'aider a faire la petite fonction de vérification?

      function verif(){
      var myRe = /[a-zA-Z0-9'-àâéèêîôùû]+/g;
      var myArray = myRe.exec(document.formulaire.nom.value);
      return myArray;
      }

      est-ce comme ca?
      1. bref,j'ai trouver une fonction:
        <html>
            <head>
                <title></title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            </head>
            <body>
                <script type="text/javascript">
        	function verifier_champs(){
        		if(document.getElementById('new_name').value == ''){
        			alert('Vous devez saisir un nom.');
        			return false;
        		}
        		
        		if(	!(/^[a-z]*$/i.test(document.getElementById('new_name').value)) ){
        			alert('Le nom ne doit pas contenir de caractères spéciaux.');
        			return false;
        		}
        		return true;
        	}
        </script>
        
        <form method="post" action="" id="addStaff" onsubmit="return verifier_champs()">
        	<span style="font-size: 14px;color: red;"> Must have         a name</span><br>
        	<label>Name</label><input type="text" name="new_name" id="new_name"><br>
        	<label>Surname</label><input type="text" name="new_surname" id="new_surname"><br>
        	<input type="submit" value="Add">
        </form>
            </body>
        </html>
        


        mais quand je remplace le regex par celle que tu m'a indiqué, ça donne une erreur, alors comment modifier cette fonction par celle que je veux?
        merci
        1. la, je crois que je l'ai, ça peut aider(mais dit toujours si ya erreur):
          <!--
          To change this template, choose Tools | Templates
          and open the template in the editor.
          -->
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
              <head>
                  <title></title>
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
              </head>
              <body>
                  <script type="text/javascript">
          	function verifier_champs(){
          		if(document.getElementById('new_name').value == ''){
          			alert('Vous devez saisir un nom.');
          			return false;
          		}
          		
          		if(	!(/^([0-9A-Za-z- _\.\'\éèàêâîù])+/i.test(document.getElementById('new_name').value)) ){
          			alert('Le nom ne doit pas contenir de caractères spéciaux.');
          			return false;
          		}
          		return true;
          	}
          </script>
          
          <form method="post" action="" id="addStaff" onsubmit="return verifier_champs()">
          	<span style="font-size: 14px;color: red;"> Must have         a name</span><br>
          	<label>Name</label><input type="text" name="new_name" id="new_name"><br>
          	<label>Surname</label><input type="text" name="new_surname" id="new_surname"><br>
          	<input type="submit" value="Add">
          </form>
              </body>
          </html>
          
          1. j'ai trouver un erreur,il nous faut une boucle:
            <!--
            To change this template, choose Tools | Templates
            and open the template in the editor.
            -->
            <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html>
                <head>
                    <title></title>
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                </head>
                <body>
                    <script type="text/javascript">
            	function verifier_champs(){
            		if(document.getElementById('new_name').value == ''){
            			alert('Vous devez saisir un nom.');
            			return false;
            		}
                     var chkZ = 1;
            	 for(i=0;i<document.getElementById('new_name').value.length;++i){
            	   if(!(/^([0-9A-Za-z- _\.\'\éèàêâîù])+/i.test(document.getElementById('new_name').value.charAt(i))))
            	     chkZ = -1;
                     }
            		if(chkZ == -1){
                                alert('Evitez les caracteres speciaux.');
                                return false;
            		}
            		return true;
            	}
            </script>
            
            <form method="post" action="" id="addStaff" onsubmit="return verifier_champs()">
            	<span style="font-size: 14px;color: red;"> Must have         a name</span><br>
            	<label>Name</label><input type="text" name="new_name" id="new_name"><br>
            	<label>Surname</label><input type="text" name="new_surname" id="new_surname"><br>
            	<input type="submit" value="Add">
                    
            </form>
                </body>
            </html>