Java e la validazione di un numero di telefono Molto spesso capita di dover validare l'input di un utente e molto spesso si deve validare il formato di un numero telefonico. Come fare questo con una semplice funzione java? |
IL PROBLEMA
Abbiamo un input digitato da un utente, questo input rappresenta un numero di telefono e noi lo vogliamo validare.
Si vuole una soluzione espressa in linguaggio java.
LA SOLUZIONE
/**
* Questa funzione valida numeri di telefono nel seguente formato:
* - Almeno una cifra numerica 0-9
* - Può o no esserci una + iniziale
* - I numeri possono essere separati da spazi bianchi in numero e formato qualsiasi
*
* @param number Il Numero di telefono/fax da validare
* @return Restituisce TRUE se il numero è stato validato correttamente
*/
public boolean validateTelFaxNumber(String number)
{
if (number == null)
{
return false;
}
String patternSpace = "\\s+";
String replaceStr = "";
Pattern pattern = Pattern.compile(patternSpace);
Matcher matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
patternSpace = "\\-+";
replaceStr = "";
pattern = Pattern.compile(patternSpace);
matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
//i caratteri / non vengono presi in considerazione
patternSpace = "\\/+";
replaceStr = "";
pattern = Pattern.compile(patternSpace);
matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
Pattern p = Pattern.compile("^(\\+)?[0-9]+$");
Matcher m = p.matcher(number);
boolean matchFound = m.matches();
return matchFound;
}
* Questa funzione valida numeri di telefono nel seguente formato:
* - Almeno una cifra numerica 0-9
* - Può o no esserci una + iniziale
* - I numeri possono essere separati da spazi bianchi in numero e formato qualsiasi
*
* @param number Il Numero di telefono/fax da validare
* @return Restituisce TRUE se il numero è stato validato correttamente
*/
public boolean validateTelFaxNumber(String number)
{
if (number == null)
{
return false;
}
String patternSpace = "\\s+";
String replaceStr = "";
Pattern pattern = Pattern.compile(patternSpace);
Matcher matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
patternSpace = "\\-+";
replaceStr = "";
pattern = Pattern.compile(patternSpace);
matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
//i caratteri / non vengono presi in considerazione
patternSpace = "\\/+";
replaceStr = "";
pattern = Pattern.compile(patternSpace);
matcher = pattern.matcher(number);
number = matcher.replaceAll(replaceStr);
Pattern p = Pattern.compile("^(\\+)?[0-9]+$");
Matcher m = p.matcher(number);
boolean matchFound = m.matches();
return matchFound;
}
Questa funzione serve solo a validare un numero di telefono / fax e non a formattarlo. La formattazione rimane quella data dall'utente. I caratteri SPAZIO BIANCO, MENO e '/' vengono eliminati prima della vera e propria validazione.
RIFERIMENTI
- Una guida ben fatta e in italiano sulle espressioni regolari la trovate qua: Espressioni regolari in Java
- La precedente rappresenta una guida facile e riassuntiva delle principali caratteristiche delle espressioni regolari. La più completa la trovate qua.
Buon lavoro!