Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539

    Aiutino su espressione regolare

    Ciao,
    vorrei validare un numero telefonico inserito in un form tramite le espressioni regolari, di cui, purtroppo, non sono molto esperto.
    Ho fatto questa funzioncina:

    Codice PHP:
    function checkPhone($number) {
        if(!
    eregi("^[0-9]{2,4}[-\./\ ][0-9]{4,}$"$number)){
            return 
    false;
        }
        else{
            return 
    true;
        }

    che mi valida un numero se tra il prefisso e il numero c'è uno spazio, oppure un segno tra punto, meno o barra.
    E fin qui tutto bene...il problema è che restituisce false se il numero è scritto tutto attaccato.
    Come posso fargli accettare anche quello?
    Grazie!

  2. #2
    Non usare ereg, usa preg.

    codice:
    preg_match('#\d{2,4}[-./ ]?\d{4,}#', $number);
    non testato

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    k.b grazie per l'aiuto;
    purtroppo non va...mi valida il numero per intero, e va bene, solo che mi passa anche stringhe con più di 4 numeri come prefisso e mi passa i caratteri

  4. #4
    Si scusa

    codice:
    preg_match('#^\d{2,4}[-./ ]?\d{4,}$#', $number);

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    Ottimo!
    Grazie mille!!!

  6. #6
    sto cercando anche io una espressione regolare che svolga tale funzione.

    Quello che ti ha suggerito kb è perfettamente funzionante!

    Il problema sorge in caso di numeri internazionali i quali:
    - possono iniziare con +0039 (prefisso italia);
    - eventualmente, tale prefisso può essere contenuto fra le parentesi
    - alle volte gli utenti possono separate prefisso e numero con il simbolo /
    - alle volte possono intervallare il numero inserendo degli spazi
    - alle volte possono intervallare il numero inserendo dei trattini - o dei punti .
    - nei numeri statunitensi ci può essere una "x" a cui seguono altri numeri.

    Come puoi capire la cosa è moooooolto più complessa.

    per un analisi di tutti questi casi http://stackoverflow.com/questions/1...ber-validation

    Il problema l'ho più o meno risolto lato client chiedendo qui sul forum http://forum.html.it/forum/showthrea...readid=1401264
    e utilizzo questo codice (scusate OT... è javascript però cmq in tema)

    Codice PHP:
    <html>
    <
    head
    <
    script language "Javascript" type="text/javascript">
    // ovviamente i numeri sono consentiti
    var digits "0123456789";
    // sono consentiti anche altri simboli e lo spazio
    var phoneNumberDelimiters "()-/. ";
    // il carattere + per i numeri internazionali
    // (a leading + is OK)
    var validWorldPhoneChars phoneNumberDelimiters "+";
    // lunghezza minima di un numero di telefono è di 9 caratteri
    var minDigitsInIPhoneNumber 9;

    function 
    isInteger(s)
    {   var 
    i;
        for (
    0s.lengthi++)
        {   
            
    // Check that current character is number.
            
    var s.charAt(i);
            if (((
    "0") || ("9"))) return false;
        }
        
    // All characters are numbers.
        
    return true;
    }

    function 
    stripCharsInBag(sbag)
    {   var 
    i;
        var 
    returnString "";
        
    // Search through string's characters one by one.
        // If character is not in bag, append to returnString.
        
    for (0s.lengthi++)
        {   
            
    // Check that current character isn't whitespace.
            
    var s.charAt(i);
            if (
    bag.indexOf(c) == -1returnString += c;
        }
        return 
    returnString;
    }
    function 
    trim(s)
    {   var 
    i;
        var 
    returnString "";
        
    // Search through string's characters one by one.
        // If character is not a whitespace, append to returnString.
        
    for (0s.lengthi++)
        {   
            
    // Check that current character isn't whitespace.
            
    var s.charAt(i);
            if (
    != " "returnString += c;
        }
        return 
    returnString;
    }
    function 
    checkInternationalPhone(strPhone){
    var 
    bracket=3
    strPhone
    =trim(strPhone)
    if(
    strPhone.indexOf("+")>1) return false
    if(strPhone.indexOf("(")!=-&& strPhone.indexOf(")")==-1)return false
    if(strPhone.indexOf("(")==-&& strPhone.indexOf(")")!=-1)return false
    s
    =stripCharsInBag(strPhone,validWorldPhoneChars);
    return (
    isInteger(s) && s.length >= minDigitsInIPhoneNumber);
    }

    function 
    ValidateForm(){
        var 
    Phone=document.frmSample.txtPhone
        
    if ((Phone.value==null)||(Phone.value=="")){
            
    alert("Please Enter your Phone Number1")
            
    Phone.focus()
            return 
    false
        
    }
        if (
    checkInternationalPhone(Phone.value)==false){
            
    alert("Please Enter a Valid Phone Number2")
            
    Phone.value=""
            
    Phone.focus()
            return 
    false
        
    }
        return 
    true
     
    }

     
    </script>

    </head>
    <body>

    <form name="frmSample" method="post" action="" onSubmit="return ValidateForm()">
      Enter a Phone Number :
        <input type="text" name="txtPhone" size="15" maxlength="25">
        

        

        <input type="submit" name="Submit" value="Submit">
                    </form>

    </body>
    </html> 
    Spero di esserti stato utile...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    Spero di esserti stato utile...
    Come no!!
    Ci avevo pensato, a dire il vero, solo che poi ho lasciato perdere perchè comunque è un form che non dovrebbe prevedere dati da parte di stranieri...dico dovrebbe perchè non si sa mai, magari cambiano idea...
    Una cosa mi è venuta in mente...volendo distinguere la validazione tra numero di telefono (che comincia per 0) e cellulare (che comincia per 3), come devo modificare il pattern?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.