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...