En este tutorial os vamos a facilitar una función para validar la letra del DNI (documento nacional de identidad de España).
COMO HACERLO.
Para llevar a cabo la validación vamos a explicar el sencillo algoritmo necesario para obtener la letra. Consiste en dividir la parte numérica del DNI entre 23 y obtener el resto. Una vez que tengamos este valor del resto obtenemos la letra según la correspondencia obtenida en la tabla siguiente:
Conociendo ésto, la construcción de una función que verifique la letra del documento no es tarea complicada:
function isDNI (dni:String):Boolean {
// array que contiene la relación
// de la tabla
var corr:Array = new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
// obtenemos la cadena de la parte numérica
var literal_parte_numerica:String = dni.substring(0,dni.length-1);
// la convertimos a un volor numérico
var valor_numerico:Number = parseFloat(literal_parte_numerica);
// obtenemos el resto
var resto:uint = valor_numerico % 23;
// obtenemos la letra del DNI
var letra:String = dni.charAt(dni.length-1).toUpperCase();
// comparamos la letra con el valor obtenido
// en la tabla correspondiente al resto
if (String(letra) == String(corr[resto])) {
// coincide
return true;
}
// no coincide
return false;
}
Como veis se trata de una functión que recibe como único parámetro la cadena del DNI y que retorna un valor booleano. Esta misma tabla se emplea también para validar el NIE (número de identificación de extranjeros en España) aunque en este caso hay que tener en cuenta que el primer carácter será una letra, normalmente una X o una Y.
Ejemplo de uso:
if(isDNI("50853893L")){
//acciones si dni ok
} else {
// acciones si dni incorrecto
}
Además si modificáis la línea var resto:uint = valor_numerico % 23; por ésta var resto:Number = valor_numerico % 23; la función os vale también para ActionScript 2.0.
En este enlace está a vuestra disposición el archivo fla para Flash CS3.