Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [js]Regexp e misteri del remoto!?! :-)

    ciao a tutti,
    stavo facendo una regexp che mi verificasse il formato degli ip (123.456.789.012) e allora mi sono fatto una pagina html come questa:

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

    ^[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}$

    evviva funziona!!!ma non avevo fatto i conti con i poteri maestrali di Js! chiaramente scherzo, ma ecco il problema...

    stavo facendo un form dove esiste un campo input dove inserire l'ip e un pulsante a cui ho associato un onclick che punta a una funzione js send() che è in file esterno al foglio (scrivo tutto perchè magari a qualche guru cade subito l'occhio sul perchè).

    nel file js esterno ho una funzione

    codice:
    function send()
    {
    /*richiamo la funzione x le verifiche con un attributo a 1 che indica che voglio controllare un ip*/
    ip=document.FormAIP.IP.value;
    verifica(ip);
    
    }
    
    function verifica(ip)
    {
       //verifico ip!
       var reg = new RegExp("^[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}$");//123.123.123.123
       newip=reg.exec(ip)
       if(newip == ip)
    	{alert("oK-> " + ip + "=>" + newip);}
    	else
    	{alert("no!");}
    }
    ora se nde campo corrispondete "a document.FormAIP.IP.value" inserisco 199.1sss.115.1 per lui è sempre corretta la regexp, cosa che non fà nel primo file html!!!perchè cambia il ragionamento della regexp in questi passaggi?!?!?!?!

    VVoVe: VVoVe: VVoVe:

  2. #2
    facendo delle provo ho visto che se metto la reg exp in un input box, questo torna a funzionare..quindi se io scirvo

    reg = new RegExp("^[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}$");
    non funziona la verifica, ma se faccio un input boc il cui value="^[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}\.+[0-9]{1,3}$"
    e scrivo

    reg = new RegExp(document.Form.inputbox.value);

    la regexp funziona!..quindi qualè la differenza?

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non ho ben capito, vado un po' di fretta,
    ma se puoi fai una prova: usa test invece di exec perche' ritornano cose diverse (exec e' anche + lento)

  4. #4
    alla fine ho risolto,il problema era che se metto tra parentesi "" la regexp questa funziona male, se ince uso //, funziona..ovvero

    non funziona
    var reg= new regexp
    reg.regexp("[a-z].....");//è solo un esempio!

    FUNZIONA
    var reg= new regexp
    reg.regexp(/[a-z]...../);//è solo un esempio!

    se sai il perchè di questo cambiamento, dimmelo che così lo losciamo a chi leggerà i prossimi post.

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non ho verificato ma, se vuoi, prova a sostituire nella stringa, la barra \ con la doppia barra \\, ossia, per esempio:

    "\d..... con

    "\\d....
    Pietro

  6. #6
    no, intendo che se l'espressione la metto tra virgolette, non funziona, ma se uso la sintassi js di inserire l'espressione tra /epressione/ questa funziona.

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ti ripeto, non posso provare e mi dispiace. Però ho visto questo esempio, fatto da Microsoft:
    codice:
    var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\s*$");
    da cui noto che è sintassi usata, e che si usa la barra doppia al posto di quella semplice

    Pietro

  8. #8
    infatti anchio non me lo spiego!mi basta sapere che ora funziona..dopo appena due giorni di tentativi


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.