Visualizzazione risultati 1 fino 10 di 10

Discussione: Validare variabile con espressioni regolari

  1. #1
    Guest

    Predefinito Validare variabile con espressioni regolari

    Salve, in PHP per "validare" secondo alcune regole specificate da me una certa variabile, usavo le espressioni regolari con una if sul preg_match(), ma in JavaScript come posso far ciò?

    Stavo provando così:

    Codice:
    var pattern = new RegExp("[0-9a-zA-Z!?,.:-]");
    var stringa = ";Ciao|";
    var result = stringa.test(pattern);
    if(result) {
    	alert('ciao');
    } else {
    	alert('No');
    }
    Per consentire solo lettere, numeri e questi caratteri speciali: !? , . : -
    però non funziona, ovvero non rimanda nessun alert. Pensavo fosse causa del trattino finale, o dell' assenza di ^ all' inizio e $ alla fine, però anche aggiungendoli non cambia molto.

    Un altro tentativo (sempre a vuoto) è stato il seguente:

    Codice:
    <script type="text/javascript">
    var pattern = new RegExp("/^[0-9a-zA-Z!?,.:-]+$/i");
    var stringa = ";Ciao|";
    var result = stringa.test(pattern);
    alert(result);
    </script>
    L' alert ovviamente non appare..

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ctrl-Shift-J (o F12 su Internet Explorer) ti mostra la console degli errori Javascript. C'è niente li?

  3. #3
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Il metodo test non appartiene alle stringhe, ma alle istanze della classe RegExp.

  4. #4
    Guest

    Predefinito

    dreadnaut mi riporta:

    Data e ora: 15/06/2012 18:05:54
    Errore: stringa.test is not a function
    File sorgente: file:///C:/Users/....nomefile.html
    Riga: 4
    karl94 cosa dovrei usare allora o come dovrei fare?

  5. #5
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Scambiare pattern e stringa quando usi il metodo test.

  6. #6
    Guest

    Predefinito

    Ok, ora funziona, però non so, credo che forse in JS non ha la stessa funzione del PHP.. Ovvero in PHP lo usavo per far in modo che si potessero usare solo quei caratteri specificati nelle parentesi quadre, ma in JS anche se uso solo quelli mi dà "false" come output.

    Codice:
    <script type="text/javascript">
    var pattern = new RegExp("/^[0-9a-zA-Z!?,.:-]+$/i");
    var stringa = "!0iao..";
    var result = pattern.test(stringa);
    alert(result);
    </script>
    Così dà sempre false

    Codice:
    <script type="text/javascript">
    var pattern = new RegExp("[0-9a-zA-Z!?,.:-]");
    var stringa = "!0iao;..";
    var result = pattern.test(stringa);
    alert(result);
    </script>
    Così sempre true :S
    Ultima modifica di demobloggest : 15-06-2012 alle ore 18.28.30

  7. #7
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Non usare il costruttore RegExp, scrivi direttamente /^[0-9a-zA-Z!?,.:-]+$/i.
    Ultima modifica di karl94 : 15-06-2012 alle ore 18.32.26

  8. #8
    Guest

    Predefinito

    Ovvero? ho rimosso RegExp però non appare più l' alert.. Ok, forse avrò capito male io (sicuro), ma ho scritto così:

    Codice:
    <script type="text/javascript">
    var pattern = "/^[0-9a-zA-Z!?,.:-]+$/i";
    var stringa = "!0iao..";
    var result = pattern.test(stringa);
    alert(result);
    </script>

  9. #9
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Togli le virgolette, non è una stringa.
    Per scriverla mediante il costruttore RegExp, avresti dovuto scrivere così:
    Codice:
    new RegExp("^[0-9a-zA-Z!?,.:-]+$", "i");
    Ma siccome l'altra scrittura è più breve, ti consiglio l'altra.
    Ultima modifica di karl94 : 15-06-2012 alle ore 18.40.50

  10. #10
    Guest

    Predefinito

    Ouch, perfetto. Grazie mille!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •