In questo articolo presentiamo alcune funzioni in javascript utili per effettuare controlli sulla validità dei dati immessi da un utente in un form.
La prima funzione che vi presentiamo è la trim(), che prende in input una stringa e restituisce la stringa stessa senza gli spazi iniziali e finali:
function trim(arg)
{
re=/\s+$|^\s+/g;
return arg.replace(re,"");
}
Tale funzione non fa altro che applicare l’espressione regolare re alla stringa di input arg.
Supponendo che arg sia ” ciao ciao “, trim(arg) resituirà la stringa “ciao ciao”.
Quando vogliamo testare se un valore immesso da un utente è un’indirizzo e-mail possiamo utilizzare la seguente funzione:
function check_mail(indirizzo) {
if (window.RegExp) {
var nonvalido = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
var valido = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
var regnv = new RegExp(nonvalido);
var regv = new RegExp(valido);
if (!regnv.test(indirizzo) && regv.test(indirizzo))
return true;
return false;
}
else {
if(indirizzo.indexOf("@") >= 0 && indirizzo.indexOf(".") > indirizzo.indexOf("@"))
return true;
return false;
}
}
La funzione check_mail() usa anch’essa le espressioni regolari per controllare se l’indirizzo e-mail immesso ha un formato corretto.
Le ultime due funzioni che vedremo servono per controllare se un certo valore è numerico.
In particolare la funzione is_integer() controlla se l’argomento passato è un numero intero non negativo:
function is_integer(arg)
{
var len = arg.length;
var count=0;
var Number=true;
/* ciclo su tutti i caratteri e verifico */
for( count=0; count<len; count++ )
{
/* leggo il carattere */
if( arg.charAt( count ) < '0' || arg.charAt( count ) > '9' )
{
/* non e' un numero */
Number=false;
break;
}
}
return Number
}
La funzione is_integer() restituisce true se l’argomento passato è un intero non negativo, altrimenti restituisce false.
Per concludere presentiamo la funzione is_not_negative_number(), per controllare se un certo valore è di tipo numerico non negativo, includendo quindi anche i numeri con cifre decimali:
function is_not_negative_number(arg)
{
arg = arg.replace(".","")
var len=arg.length;
/* se la stringa è di lunghezza 0 restituisco false */
if(len==0)
return false;
var count=0;
var decimal=false
/* ciclo su tutti i caratteri e verifico */
for(count=0;count<len;count++)
{
/* leggo il carattere */
if(arg.charAt( count ) < '0' || arg.charAt( count ) > '9' )
/* se è una virgola */
if(arg.charAt(count)==',')
/* se è la prima virgola che incontro memorizzo questa informazione altrimenti restituisco false */
if(count>0 && !decimal)
decimal=true
else
return false;
else
/* non e' un numero */
return false;
}
return true;
}
La funzione is_not_negative_number() restituisce true se l’argomento passato è un numero non negativo, altrimenti restituisce false.
Blog