Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2011, 16:20
Avatar de bitbow
bitbow
 
Fecha de Ingreso: julio-2006
Ubicación: Distrito Federal
Mensajes: 635
Antigüedad: 17 años, 9 meses
Puntos: 34
Funcion Valida RFC : Mexico, Le falta algo, me pueden ayudar?

Hola!

Les comparto la siguiente funcion que estoy utilizando para la validacion de RFC, esto es valido para Mexico, tengo un problema con la validacion y no es precisamente la funcion, es algo que debe validar pero aun no lo tiene implementado por que no se como puedo incluirlo, espero me puedan ayudar.

Problema: En la normativa aplicada para mexico se han comensado a incluir nuevos caracteres que antes no eran considerados, tal es el caso de la "Ñ" y el "&" por lo que la "Ñ" ya se incluye en la funcion pero en el caso de el "&" la funcion manda un exception, les pongo el mensaje que envia y la cadena de Pattern que uso, espero me puedan ayudar.

Pattern ="([A-Z-Ñ-&]{4})([0-9]{6})([A-Z-Ñ-&0-9]{3})"
Error = analizando "([A-Z-Ñ-&]{4})([0-9]{6})([A-Z-Ñ-&0-9]{3})" - Intervalo [x-y] en orden inverso.

Private Function RFCValido(ByVal StrRFC As String) As Boolean
Dim StrPattern As String = Nothing
Dim IntError As Integer = 0

StrRFC = Regex.Replace(StrRFC, "[*/_" + Chr(32) + Chr(45) + "]", "")

Try
If Not (StrRFC = Nothing) Then

If StrRFC.Length = 12 Then
StrPattern = "([A-Z-Ñ]{3})([0-9]{6})([A-Z-Ñ0-9]{3})"
ElseIf StrRFC.Length = 13 Then
StrPattern = "([A-Z-Ñ]{4})([0-9]{6})([A-Z-Ñ0-9]{3})"
Else
StrPattern = "([0-9])"
IntError = -1
End If

If (IntError = 0) Then
StrRFC = StrRFC.ToUpper

If OraNumReg(1, StrRFC) = 0 Then
If Regex.IsMatch(StrRFC, StrPattern) Then
Return True

Else
Return False
End If

Else
Return False
End If

Else
Return False
End If

Else
Return False
End If

Catch ex As Exception
Return False
End Try
End Function
__________________
El ego es el mayor enemigo de un hombre inteligente.