Foros del Web » Programando para Internet » PHP »

Expresiones Regulares

Estas en el tema de Expresiones Regulares en el foro de PHP en Foros del Web. Necesito validar una cadena que contenga al principio una letra mayuscula y al final termine con un punto.. por separado me funciona: 1)Cadena que al ...
  #1 (permalink)  
Antiguo 10/02/2010, 11:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Expresiones Regulares

Necesito validar una cadena que contenga al principio una letra mayuscula y al final termine con un punto..
por separado me funciona:
1)Cadena que al principio contenga letra mayuscula:
Código PHP:
(preg_match('/(^[A-Z])/',$cadena)) 
2)Cadena que al final contenga un punto:
Código PHP:
preg_match('/(\.)$/',$cadena)) 
Pero cuando los uno no me funciona
Código PHP:
preg_match('/(^[A-Z])(\.)$/',$cadena//de una forma
preg_match('/(^[A-Z])((\.)$)/',$cadena)     //de otra forma 
¿cual es el error?
  #2 (permalink)  
Antiguo 10/02/2010, 11:38
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Expresiones Regulares

Creo que debes indicarle que entre la letra mayuscula de inicio y el punto al final puede ir cualquier caracter (.)* ( olos caracteres que queiras permitir)

Porque de la forma que lo tienes estas buscando una cadena que _solo_ sea una letra mayuscula seguida de un punto
  #3 (permalink)  
Antiguo 10/02/2010, 11:41
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresiones Regulares

Código PHP:
Ver original
  1. preg_match('/(^[A-Z]{1}.*\.$)/',$cadena);

asi te funciona ?
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 10/02/2010, 12:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expresiones Regulares

Exacto darkasecas! y Gracias por la explicacion del porque...
Hidek1 tambien gracias....

soy nuevo en esto ¿ tengo que dar una votacion?... o ¿simplemente doy las gracias? jejejje
  #5 (permalink)  
Antiguo 10/02/2010, 12:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Expresiones Regulares

Sólo agregar que cuantificar en {1} no es necesario, basta con:
Código PHP:
Ver original
  1. preg_match('/(^[A-Z].*\.$)/',$cadena);
Si el texto contiene saltos de línea, tendrás que agregar el flag 's' a la expresión para que el "." capture todo
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 10/02/2010, 12:35
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresiones Regulares

Cita:
Iniciado por David Ver Mensaje
Sólo agregar que cuantificar en {1} no es necesario, basta con:
Código PHP:
Ver original
  1. preg_match('/(^[A-Z].*\.$)/',$cadena);
Si el texto contiene saltos de línea, tendrás que agregar el flag 's' a la expresión para que el "." capture todo
es verdad.. me confundi pensando que solo queria que la primera fuera mayuscula, en todo caso seria diferente de todos modos

Código PHP:
Ver original
  1. preg_match('/(^[A-Z][a-z0-9]*\.$)/',$cadena);

saludos!
__________________
More about me...
~ @rhyudek1
~ Github

Última edición por Hidek1; 10/02/2010 a las 13:06
  #7 (permalink)  
Antiguo 10/02/2010, 12:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Expresiones Regulares

Hola, Hidek1.

En realidad, de la forma como indiqué, sólo la primera necesita ser mayúscula. Como dije, cuantificar en {1} es redundante. A menos que se indique lo contrario, el grupo [A-Z] sólo debe aparecer una vez.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 10/02/2010, 13:05
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresiones Regulares

si, pero luego le das un punto, y con eso le dices que puede haber mas mayusculas
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 10/02/2010, 13:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Expresiones Regulares

No, el . es un metacaracter que significa "cualquier carácter". Lo que indica que puede haber más de n es el cuantificador que en este caso es * (cualquier número de veces)

Por ejemplo, si usaras la expresión:
/^.$/
Cualquier cadena que tenga más de un carácter no validará, ya que ese "." lo unico que indica es cualquier carácter (una vez), pero si usas esto:
/^.*$/
Sí, cualquier cadena (que no contenga saltos de línea) validará.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 10/02/2010, 13:13
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Expresiones Regulares

Cita:
Iniciado por Hidek1 Ver Mensaje
si, pero luego le das un punto, y con eso le dices que puede haber mas mayusculas
Y en ningun momento el OP dice que no pueda haber mas, solo que debe haberla al principio
  #11 (permalink)  
Antiguo 10/02/2010, 13:18
 
Fecha de Ingreso: diciembre-2008
Mensajes: 32
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Expresiones Regulares

Tienes razon David se hace redundante el cuantificador {1}... Hidik ese cuantificador ni siquiera me restringe que solo la primera letra sea mayuscula, creo que no hace nada alli... de todas maneras gracias hermano era solo un detalle!

David tienes razon tambien en lo de salto de linea para probar hice esto:

Código PHP:
$cadena="Esto es un ejemplo \n otra linea.";
if(
preg_match('/^[A-Z].*\.$/',$cadena)){
  echo 
"Fue valido<br>";

y no me lo valida bien ¿como agrego ese flag 's' para que el punto me agrague el salto de linea, tabulaciones? por favor no quiero investigar
  #12 (permalink)  
Antiguo 10/02/2010, 13:19
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresiones Regulares

tengo una confusion gigante x'D pero no a grado de expresiones regulares.. entendi mal la pregunta nomas.. lo dejare asi por ahora .. ya vendra mi revancha *o*..!!

saludos! :3
__________________
More about me...
~ @rhyudek1
~ Github
  #13 (permalink)  
Antiguo 10/02/2010, 13:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Expresiones Regulares

Así:
/^[A-Z].*\.$/s

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 10/02/2010, 13:20
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresiones Regulares

Cita:
por favor no quiero investigar
es encerio (?)

aca ayudamos a los que investigan por su cuenta.. esa frase no me gusto -.-!
__________________
More about me...
~ @rhyudek1
~ Github
  #15 (permalink)  
Antiguo 10/02/2010, 13:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Expresiones Regulares

Cita:
Iniciado por Hidek1 Ver Mensaje
tengo una confusion gigante x'D pero no a grado de expresiones regulares.. entendi mal la pregunta nomas.. lo dejare asi por ahora .. ya vendra mi revancha *o*..!!

saludos! :3
No pasa nada, sólo había hecho un comentario aclaratorio.

Para no dejar dudas. Me refiero a que esto:
/^a{1}b{1}c{1}[A-Z]{1}.*/
Es exactamente igual a esto:
/^abc[A-Z].*/
Encontrarán en la cadena exactamente lo mismo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 10/02/2010, 13:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 32
Antigüedad: 15 años, 4 meses
Puntos: 0
Para nada hidik siempre me ha gustado investigar.... :=)

y gracias de nuevo David, hidik1 por interesarce... saludos

Última edición por GatorV; 10/02/2010 a las 14:29

Etiquetas: expresiones, regulares
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 06:24.