PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

16 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Foros / Javascript / Sobre expresiones regulares

Sobre expresiones regulares

3 respuestas 666 visitas Categoría Javascript

Sobre expresiones regulares

Avatar de escartino
* * * * * * *

(Nivel 2 - 122 posts)

#0 Offline escartino Usuario 26 ene 10
Buenas!!!
he hecho un metodo que me comprueba si una matricula introducida en un campo de texto puede ser correcta.
Es españa hay 3 tipos de matriculas de coches:
hasta el 71: letra+7 numeros
del 71 al 2000: letra o 2 letras +4 numeros +2 letras
desde 2000: 4 numeros+3 letras

Pues bien, viendo esto he hecho el metodo con expresiones regulares, realmente funciona excepto si pongo digitos o letras de mas al final que ya no las comprueba, este es mi metodo, me gustaria saber si hay alguna forma de decirle que si hay mas letras despues de la expresion tb tiene que ser false....

 function matricula_correcta(matricula) {
var er_mat = /^D+d+d+d+d+d+d$/
var er_mat1 = /^D+0|D+d+d+d+d+D+D$/
var er_mat2 = /^d+d+d+d+D+D+D$/
if (er_mat.test(matricula)) {
return true;
}
if (er_mat1.test(matricula)) {
return true;
}if (er_mat2.test(matricula)) {
return true;
}
return false;
}






Alguna idea?
gracias de antemano

Re: Sobre expresiones regulares

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 445 posts)

#1 Offline Eloy8857 Usuario 26 ene 10
No sé qué tipo de expresiones regulares son ésas... sin ser un maestro yo hubiera puesto:


var er_mat = /^[a-z][d]{7,7}$/i; 
var er_mat1 = /^[a-z]{1,2}[d]{4,4}[a-z]{2,2}$/i; 
var er_mat2 = /^[d]{4,4}[a-z]{3,3}$/i;



Saludos.

Edit: Faltan las contrabarras en los "d", ya sabéis que el foro las quita :(

Restless Souls Online: se viene un gran MMORPG

Re: Sobre expresiones regulares

Avatar de escartino
* * * * * * *

(Nivel 2 - 122 posts)

#2 Offline escartino Usuario 28 ene 10
var er_mat = /^[a-zA-Z]{1}[0-9]{6}$/;
var er_mat1 = /^[a-zA-Z]{1}[0-9]{4}[a-zA-Z]{2}$/;
var er_mat2 = /^[a-zA-Z]{2}[0-9]{4}[a-zA-Z]{2}$/;
var er_mat3 = /^[0-9]{4}[a-zA-Z]{3}$/;

Al final lo resolvi asi.
Por otro lado tengo que preparar una nueva validacion para los NIE de los extranjeros. estos tienen un fotmato que es:
X1234567L
donde X puede ser: x,X,y,Y
L puede ser cualquier letra
he probado asi 
/^x|X|y|Y[0-9]{7}[a-zA-Z]{1}$/;
sin embargo en la parte de los 7 numeros puedo poner lo que yo quiera :| que lo acepta

un saludo

Re: Sobre expresiones regulares

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 445 posts)

#3 Offline Eloy8857 Usuario 28 ene 10
Hacer x|X|y|Y no es la manera de que sea uno de esos cuatro... con | puedes poner dos coincidencias, no más. Usa los corchetes para eso.

Para los NIE podrías usar:

/^[xy]{1}[0-9]{7}[a-z]{1}$/i

A mí me parece más legible.

De todas formas yo buscaría una de las 1000 funciones js que hay para validar NIFs, que es mejor que una simple regexp. Así validas el carácter de control también. Los NIF y los NIE se validan igual descartando la X; lo que pasa es que llevan un 0 delante y no lo suelen poner, así que no son 7 números sino 8.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

php-hispano.net 2002 - 2010 | XHTML 1.0
Datos Legales | Webmaster