Validar si es RUT valido (Chile) con isRut() en PHP y Javascript

Posted on Jueves, marzo 4th, 2010 at 12:48

Validar RUT:
Trabajando en un proyecto para chile, me surgio la necesidad de validar el formato del RUT chileno, (Que seria como el DNI de Argentina). Tanto en el Backend del php como en el formulario de carga del RUT para avisarle al usuario al tiempo que escribe como es el formato correspondiente.
Como un extra, aparte de las funciones les dejo un link a un generador de RUTs validos:

Aca les dejo las funciones para validar el RUT en php y javascript, del siguiente formato XXYYYZZZ-K

PHP:

function isRut($value=''){
       if(empty($value))
	   {
           return false;
       }
       $RegExp = '/^([0-9])+\-([kK0-9])+$/';
       if (!preg_match($RegExp, $value)){
           return false;
       }
       $RUT  = explode("-",$value);
       $elRut = $RUT[0];
       $factor = 2;
       $suma = 0;
     for($i=strlen($elRut)-1; $i>=0; $i--){
           $factor = ($factor > 7) ? 2 : $factor;
           $suma += ((int)$elRut{$i}) * ((int)$factor++ );
     }
       $ret = true;
       $dv = 11 - ($suma % 11);
       if($dv == 11){
           $dv = 0;
       }else if ($dv == 10){
           $dv = "k";
       }
       if($dv != strtolower($RUT[1]) ){
           $ret = false;
       }
       return $ret;
}

Javascript:

function isRut(value){
		   if(value == ''){
			   return false;
		   }
		   var rexp = new RegExp(/^([0-9])+\-([kK0-9])+$/);
		   if(!value.match(rexp)){
			   return false;
		   }
		   var RUT  = value.split("-");
		   var elRut = RUT[0];
		   var factor = 2;
		   var suma = 0;
		   var dv;
		   for(i=(elRut.length-1); i>=0; i--){
			   factor = factor > 7 ? 2 : factor;
			   suma += parseInt(elRut[i])*parseInt(factor++);
		   }
		   var ret = true;
		   dv = 11 -(suma % 11);
		   if(dv == 11){
			   dv = 0;
		   }else if (dv == 10){
			   dv = "k";
		   }
		   if(dv != RUT[1].toLowerCase()){
			   ret= false;
		   }
		   return ret
	   }

Cualquier cosa comenten si tienen problemas :)

Salutes

You can leave a response, or trackback from your own site.

Leave a reply

Name (*)
Mail (will not be published) (*)
URI
Comment