Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: RegExp non funziona

  1. #1
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697

    RegExp non funziona

    Perchè non riconosce e non esce l'alert di "mela"?

    codice:
    function controlla1(){
    var f = document.mioform1;
    var parole =  new RegExp("^([mela])$");   
    var stringa = document.mioform1.nome.value;
    for(i=0;i<parole.length;i++)
    if (!stringa.match(parole[i])){         
    f.nome.style.backgroundColor='red'
    alert("La parola '"+parole[i]+"' non è ammessa");
    return false;
    }
    ...

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Perche' tratti la RE appena creata come se fosse un array?
    Inoltre, sapresti spiegarmi cosa ti aspetti da quella RE? perche' l'hai costruita in quel modo?
    e per finire... il ciclo for a quale gruppo di istruzioni si applica? dove inizia e dove finisce?

    Non mi sento di fornirti consigli per il momento.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da br1
    Perche' tratti la RE appena creata come se fosse un array?
    Inoltre, sapresti spiegarmi cosa ti aspetti da quella RE? perche' l'hai costruita in quel modo?
    e per finire... il ciclo for a quale gruppo di istruzioni si applica? dove inizia e dove finisce?

    Non mi sento di fornirti consigli per il momento.

    ciao
    Ti spiego VVoVe: il codice originale e funzionante è questo, però volevo creare una reg in modo che riconosce e blocca la parola:

    codice:
    function controlla1(){
    var f = document.mioform1;
    new Array("mela");
    var stringa = document.mioform1.nome.value;
    for(i=0;i<parole.length;i++)
    if (stringa.indexOf(parole[i]) != (-1)){
    f.nome.style.backgroundColor='red'
    alert("La parola '"+parole[i]+"' non è ammessa");
    return false;
    }

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Le circonvoluzioni mentali che ti hanno condotto a generare quella fantastica sintassi finale saranno presumibilmente oggetto di studi sulla imperscrutabilita' e inconoscibilita' della mente umana...
    Prima di affrontare la genesi di un nuovo script o la semplice modifica di quelli esistenti prova piuttosto a dedicarti allo studio di un minimo di basi e all'esame e comprensione degli script creati dagli altri.

    Mi spiace, se troppo fuori i limiti delle mie capacita'.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da br1
    Le circonvoluzioni mentali che ti hanno condotto a generare quella fantastica sintassi finale saranno presumibilmente oggetto di studi sulla imperscrutabilita' e inconoscibilita' della mente umana...
    Prima di affrontare la genesi di un nuovo script o la semplice modifica di quelli esistenti prova piuttosto a dedicarti allo studio di un minimo di basi e all'esame e comprensione degli script creati dagli altri.
    adoro questo moderatore

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ci sono parecchie cose che non vanno nello script che hai cercato di adattare con le regular expressions
    ti faccio un esempio di come potrebbe andare
    codice:
    <script>
    function controlla1(){
    	var f = document.mioform1;
    	var parole =  new RegExp("\\b(mela|pera)\\b");   
    	var stringa = document.mioform1.nome.value;
    	if(stringa.match(parole) && stringa.match(parole)[0]){         
    		f.nome.style.backgroundColor='red'
    		alert("La parola '"+stringa.match(parole)[0]+"' non è ammessa");
    		return false;
    	}
    	return true
    }
    </script>
    <form name="mioform1" onsubmit="return controlla1()">
    <input type="text" name="nome" size="80">
    <input type="submit" value="sub">
    </form>
    nella regular expression ho messo 2 parole. Per metterne altre ti basta separarle con | che è la or nelle regular expressions
    se servono chiarimenti chiedi pure

  7. #7
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da willybit
    ci sono parecchie cose che non vanno nello script che hai cercato di adattare con le regular expressions
    ti faccio un esempio di come potrebbe andare
    codice:
    <script>
    function controlla1(){
    	var f = document.mioform1;
    	var parole =  new RegExp("\\b(mela|pera)\\b");   
    	var stringa = document.mioform1.nome.value;
    	if(stringa.match(parole) && stringa.match(parole)[0]){         
    		f.nome.style.backgroundColor='red'
    		alert("La parola '"+stringa.match(parole)[0]+"' non è ammessa");
    		return false;
    	}
    	return true
    }
    </script>
    <form name="mioform1" onsubmit="return controlla1()">
    <input type="text" name="nome" size="80">
    <input type="submit" value="sub">
    </form>
    nella regular expression ho messo 2 parole. Per metterne altre ti basta separarle con | che è la or nelle regular expressions
    se servono chiarimenti chiedi pure
    Ti spiego, diciamo che la reg l'ho inventata per un solo motivo: mettere le parole singole e plurali in un colpo solo senza dover scriverle 2 volte, es mela(e)?, pera(e)?

    Il motivo è solo quello, con l'array dovrei scrivere 2 volte la parola

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Braco
    Ti spiego, diciamo che la reg l'ho inventata per un solo motivo: mettere le parole singole e plurali in un colpo solo senza dover scriverle 2 volte, es mela(e)?, pera(e)?
    Ah, ok, allora e' quasi crossposting
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da br1
    Ah, ok, allora e' quasi crossposting
    Forse ho risolto:
    codice:
    var parole =  new RegExp("\\b(mel(a|e)|per(a|e))\\b");
    in questo modo mi prende anche il plurale

  10. #10
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Cè una cosa che non ho afferrato: quel \\b a cosa serve? Le reg non usano le parentesi quadre e altri simboli di apertura/chiusura?
    Eppure funziona

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.