Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [RegExp]Verifica email

  1. #1

    [RegExp]Verifica email

    ciao a tutti,
    so che esitono molti post sull'argomento, ma la mia domanda serve per capire.

    allora, mi sono creato un form html così

    codice:
    <html>
    <head>
    </head>
    <script>
    function test()
    	{
    	str=document.formm.textfield.value;
    	var reg = new RegExp(document.formm.regx.value);
    	alert(reg.exec(str));
    	}
    </script>
    <body>
    
    
    
    <form name="formm">
      
    
    REGEXP
    
        <input type="text" name="regx">
      </p>
      
    
    STRINGA
    
        <input name="textfield" type="text"></p>
        </p>
      
    
    
      <input type="button" name="Submit" value="Invia" onClick="test()">
    </p>
    </form>
    </body>
    </html>
    dopo ho inserito nel'input x la reg exp

    ^[a-z0-9\-\_]*\@[a-z0-9\-]+(.it|.com|.net|.org)

    e come stringa

    pippo@pippo.it

    perchè esce un'alert che mi dà 2 risultati e non uno solo?

    risultato dell'alert è "pippo@pippo.it,.it"

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    perchè il metodo exec ti restituisce un array le cui parti sono

    - la stringa matchata nell'indice 0.
    - ogni sottostringa che è delimitata da parentesi tonde nella espressione regolare

    e infatti l'alert ti restituisce prima la stringa completa e poi .it che è delimitata da tonde nella regexp

    quindi se vuoi ottenere il match completo scrivi

    codice:
    function test() {
    	str=document.formm.textfield.value;
    	var reg = new RegExp(document.formm.regx.value);
    	var result = reg.exec(str);
            alert(result[0]);
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    fcaldera, ma sei ovunque!

    se non approfitto chiariscimi una cosa...io pensavo erroneamnete che inserire /.....(it|com)/ significasse che la regexp in quel punto cercava una tra le ricorrenze della parentesi, ovverò...cercami in quel punto la presenza di una delle stringhe separate dal simbolo |...quindi qualè il ragionamento logico da adottare in questo caso?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il tuo ragionamento è corretto: l'operatore pipe | fa esattamente ciò che hai detto.

    Qual è il problema?

    L'unico problema che aveva il tuo script è che il metodo .exec restituisce un array. Tutto qui
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    ah, quindi se faccio il match tra la variabile ricevuta dal form e l'array 0 della regexp posso verificare con esattezza la mia espressione? io pensavo che la regexp doveva restuire solo e unicamente valori se c'era corrispondenza..quindi pensavo che lui in base alla mia regexp vedeva in pippo@pippo.it la corrispondenza sia sul totale della stringa che in .it!

    so che mi sono spiegato male, però mi basta sapere che devo fare sempre il confronto con l'array(0)..giusto?se si, anche se non metto valori in parentesi nelle regexp?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il metodo .exec restituisce un array nella cui posizione 0 c'è il match totale e nelle posizioni successive restituisce tutte le sottostringhe tra parentesi tonde nell regexp.

    il metodo .match invece restituisce un booleano (true o false) se la stringa corrisponde o meno all'espressione regolare e si usa così:

    codice:
    if stringa_da_controllare.match(/regexp/) {
      /* la stringa corrisponde */
    }
    else {
      /* la stringa è errata */
    }
    puoi chiarire meglio le idee qui
    http://www.regular-expressions.info/javascript.html
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    beh + chiaro di così viene difficile


    grazie fcaldera, quel sito non lo avevo mai visto..thanks

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a proposito... l'espressione regolare che usi non mi sembra molto versatile. In pratica è limitata a domini .it .com .net .org

    è una cosa voluta?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  9. #9
    si, perchè possiamo per ora solo gestire quelli e i biz e info, tutti gli altri no...è una regexp specifica.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.