Para Validar RIF , código c#
public bool validarRif(string sRif)
{
bool bResultado = false;
int iFactor = 0;
sRif = sRif.Replace("-", "");
if (sRif.Length < 10)
sRif = sRif.ToUpper().Substring(0, 1) + sRif.Substring(1, sRif.Length - 1).PadLeft(9, '0');
string sPrimerCaracter = sRif.Substring(0, 1).ToUpper();
switch (sPrimerCaracter)
{
case "V": iFactor = 1; break;
case "E": iFactor = 2; break;
case "J": iFactor = 3; break;
case "P": iFactor = 4; break;
case "G": iFactor = 5; break;
}
if (iFactor > 0)
{
int suma = ((int.Parse(sRif.Substring(8, 1))) * 2)
+ ((int.Parse(sRif.Substring(7, 1))) * 3)
+ ((int.Parse(sRif.Substring(6, 1))) * 4)
+ ((int.Parse(sRif.Substring(5, 1))) * 5)
+ ((int.Parse(sRif.Substring(4, 1))) * 6)
+ ((int.Parse(sRif.Substring(3, 1))) * 7)
+ ((int.Parse(sRif.Substring(2, 1))) * 2)
+ ((int.Parse(sRif.Substring(1, 1))) * 3)
+ (iFactor * 4);
float dividendo = suma / 11;
int DividendoEntero = (int)dividendo;
int resto = 11 - (suma - DividendoEntero * 11);
if (resto >= 10 || resto < 1)
resto = 0;
if (sRif.Substring(9, 1).Equals(resto.ToString()))
{
bResultado = true;
}
}
return bResultado;
}
lunes, 10 de mayo de 2010
Validaciones: RIF en Venezuela
Suscribirse a:
Comentarios de la entrada (Atom)
por casualidad no es mas facil validarlo por expresiones regulares.
ResponderBorrarMas vale tarde que nunca, en efecto mi pana, esta expresion regular valida el rif:
ResponderBorrar^[JGVE][-][0-9]{8}[-][0-9]$
No es n de lejos la mas refinada que hay pero espero que te sea de utilidad.
me comí la P, entonces queda:
Borrar^[JGVEP][-][0-9]{8}[-][0-9]$
^[JGVEP][-][0-9]{8}[-][0-9]{1}$
BorrarLa expresion regula te sireve para validar el formato del RIF.
ResponderBorrarLa funcion antes explicada te sirve para determinar si el RIF es valido funcionalmente.
Aqui les dejo la funcion en Java
public boolean validarRif(String sRif) {
boolean bResultado = false;
int iFactor = 0;
sRif = sRif.replace("-", "");
if (sRif.length() < 10) {
sRif = sRif.toUpperCase().substring(0, 1) + padLeft(sRif.substring(1, sRif.length() - 1), "0", 9);
}
String sPrimerCaracter = sRif.substring(0, 1).toUpperCase();
switch (sPrimerCaracter) {
case "V": iFactor = 1; break;
case "E": iFactor = 2; break;
case "J": iFactor = 3; break;
case "P": iFactor = 4; break;
case "G": iFactor = 5; break;
}
if (iFactor > 0) {
int suma;
suma = ((Integer.parseInt(sRif.substring(8, 9))) * 2)
+ ((Integer.parseInt(sRif.substring(7, 8))) * 3)
+ ((Integer.parseInt(sRif.substring(6, 7))) * 4)
+ ((Integer.parseInt(sRif.substring(5, 6))) * 5)
+ ((Integer.parseInt(sRif.substring(4, 5))) * 6)
+ ((Integer.parseInt(sRif.substring(3, 4))) * 7)
+ ((Integer.parseInt(sRif.substring(2, 3))) * 2)
+ ((Integer.parseInt(sRif.substring(1, 2))) * 3)
+ (iFactor * 4);
int resto = 11 - (suma % 11);
if (resto >= 10 || resto < 1){
resto = 0;
}
if (sRif.substring(9, 10).equals(Integer.toString(resto))) {
bResultado = true;
}
}
return bResultado;
}
public static String padLeft(String valor,String relleno,int longitud) {
String resultado=valor;
int x = longitud-valor.length(), i=0;
while (i<x){
resultado=relleno+resultado;
i++;
}
return resultado;
}
J-11111881-1 este rif porq no es valido?
ResponderBorrarSaludos, tendrán algo para excel
ResponderBorrar/*
ResponderBorrareste seria un patron mas correcto, con minimo 7 caracteres y un maximo de 9, despues del tipo de documento y antes del digito verificador
^[JGVEP][-][0-9]{7,9}[-][0-9]{1} de html
el siguiente codigo se puede usar como validacion agregando la clase valida_rif a un input
*/
let _elementosDOM = document.querySelectorAll('.valida_rif');
//Recorremos cada uno de nuestros elementos DOM HTML con la clase valida_rif
for(let i = 0; i < _elementosDOM.length; i++){
_elementosDOM[i].addEventListener('keyup', function(pEvento){
this.value = this.value.replace(/^[JGVEP][-][0-9]{7,9}[-][0-9]{1}$/gi, '');
});
};