Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] expresion regular acepte numeros y letras o solo numeros pero no solo letras

Estas en el tema de expresion regular acepte numeros y letras o solo numeros pero no solo letras en el foro de PHP en Foros del Web. Hola!! Pido su ayuda con esta expresion regular, la verdad nunca se me han dado la expresiones, soy malisima :( necesito, como el titulo lo ...
  #1 (permalink)  
Antiguo 27/03/2013, 09:27
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
expresion regular acepte numeros y letras o solo numeros pero no solo letras

Hola!!

Pido su ayuda con esta expresion regular, la verdad nunca se me han dado la expresiones, soy malisima :(

necesito, como el titulo lo indica, que:

acepte numeros y letras:

1A23B

o solo numeros:

12345

pero no solo letras:

ABCDE

Lo que tengo es:

Código PHP:
Ver original
  1. ereg("[^a-zA-Z0-9]", $variable)

Pero esto me acepta los tres casos,

como le debo hacer para que excluya si son solo letras?

gracias
  #2 (permalink)  
Antiguo 27/03/2013, 09:39
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

Talvez te sirva este

http://newsourcemedia.com/blog/php-r...ic-characters/
  #3 (permalink)  
Antiguo 27/03/2013, 09:46
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

hola gracias por tu ejemplo,

pero no necesito, ni debo, cambiar/reemplazar la cadena de entrada, necesito saber si tiene:

letras y numeros o numeros => ok

letras => error
  #4 (permalink)  
Antiguo 27/03/2013, 09:48
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

Código PHP:
"/^[0-9]*$/";        // Solo cadena vacia o numeros

"/^[0-9]+$/";              // Solo numeros. No se admite cadena vacia

"/^[a-zA-Z]+$/";             // Solo letras en mayusculas/minusculas. No se admite cadena vacia

"/^[0-9a-zA-Z]+$/";        // Solo letras en mayusculas/minusculas y numeros. No se admite cadena vacia 
usa los preg_match con if para compararlos..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 27/03/2013, 09:54
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

hola loncho_rojas

si entiendo lo que debo hacer es una condicion doble?, es decir:

Código PHP:
Ver original
  1. if(ereg("/^[0-9]+$/", $variable) || ereg("/^[0-9a-zA-Z]+$/", $variable)){
  2.     //ok
  3. } else{
  4.     //error
  5. }

lo que seria si $variable es solo numeros O solo letras en mayusculas/miunusculas y numeros

estoy bien?
  #6 (permalink)  
Antiguo 27/03/2013, 10:35
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

Puedes hacer algo así y no necesitas sino una condición:

Código PHP:
Ver original
  1. $regex = '#^[a-z]*[0-9][a-z0-9]*$#i';
  2.  
  3. var_dump(preg_match($regex, 'ABCDE'));
  4. var_dump(preg_match($regex, '1A23B'));
  5. var_dump(preg_match($regex, '12345'));
  6. var_dump(preg_match($regex, 'andres'));
  7. var_dump(preg_match($regex, 'andres1'));

PD: var_dump es a modo de ejemplo y la función ereg es obsoleta.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 27/03/2013, 10:37
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

PErdon no habia visto lo de usar el preg_match

mira hice unas pruebas y no concigo que salga correctamente:

Código PHP:
Ver original
  1. $cadena_n = "12345";
  2. $cadena_l = "abcde";
  3. $cadena_2 = "1a3bc";
  4.  
  5. if(preg_match("/^[0-9]+$/", $cadena_n) || preg_match("/^[0-9a-zA-Z]+$/", $cadena_n)){
  6.     echo "si contiene letras y/o numeros. $cadena_n <br />";
  7. } else{
  8.     echo "no contiene letras y/o numeros. $cadena_n <br />";
  9. }
  10.  
  11. if(preg_match("/^[0-9]+$/", $cadena_l) || preg_match("/^[0-9a-zA-Z]+$/", $cadena_l)){
  12.     echo "si contiene letras y/o numeros. $cadena_l <br />";
  13. } else{
  14.     echo "no contiene letras y/o numeros. $cadena_l <br />";
  15. }
  16.  
  17. if(preg_match("/^[0-9]+$/", $cadena_2) || preg_match("/^[0-9a-zA-Z]+$/", $cadena_2)){
  18.     echo "si contiene letras y/o numeros. $cadena_2 <br />";
  19. } else{
  20.     echo "no contiene letras y/o numeros. $cadena_2 <br />";
  21. }

el resultado es:

si contiene letras y/o numeros. 12345
si contiene letras y/o numeros. abcde
si contiene letras y/o numeros. 1a3bc

si cambio || por &&, el resultado es:

si contiene letras y/o numeros. 12345
no contiene letras y/o numeros. abcde
no contiene letras y/o numeros. 1a3bc

EDITO: Vaya! parece que casi contestamos al mismo tiempo,

Cita:
Puedes hacer algo así y no necesitas sino una condición:


Código PHP: Ver original0.$regex = '#^[a-z]*[0-9][a-z0-9]*$#i';0. 0.var_dump(preg_match($regex, 'ABCDE'));0.var_dump(preg_match($regex, '1A23B'));0.var_dump(preg_match($regex, '12345'));0.var_dump(preg_match($regex, 'andres'));0.var_dump(preg_match($regex, 'andres1'));
PD: var_dump es a modo de ejemplo y la función ereg es obsoleta.

Saludos.
Acabo de ver tu respuesta justo cuando mande la mia, gracias por tu ayuda, pruebo lo que me propones y comento sale!!
  #8 (permalink)  
Antiguo 27/03/2013, 11:09
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

listo!! muchas gracias ya quedo.

Código PHP:
Ver original
  1. $regex = '#^[a-z]*[0-9][a-z0-9]*$#i';
  2. if((preg_match($regex, $variable))==1){
  3.     echo "ok";
  4. }
  5. else{
  6.     echo "error";
  7. }
  #9 (permalink)  
Antiguo 27/03/2013, 11:10
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: expresion regular acepte numeros y letras o solo numeros pero no solo letr

Mejor así:

Código PHP:
Ver original
  1. $regex = '#^[a-z]*[0-9][a-z0-9]*$#i';
  2.  
  3. if((preg_match($regex, $variable))){
  4.     echo "ok";
  5. }
  6. else{
  7.     echo "error";
  8. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 27/03/2013 a las 11:16

Etiquetas: expresion, letras, numeros, regular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:20.