[RETOS] Expresiones Regulares

Iniciado por criskapunk, 23 Agosto 2011, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

criskapunk

@Shell Root:
Esa expresión permite en la primer palabra que todas las letras sean mayúsculas. Solo pueden ir al principio de cada una.

@Valkyr:
Funciona perfecto :D Cumple con los requisitos que puse en el primer post. Te toca postear reto.

Un saludo.


Valkyr

Shell Root, no puse tildes porque en el primer post no especificaba que los nombres pudiesen llevar tildes, sí quisiesemos que la expresión regular reconociese muchos más nombres habría que hacer exactamente lo que dices.

De acuerdo, pues yo propongo este:

Expresión regular para buscar cadenas que vayan entre comillas, sin  comillas dentro y que puedan ocupar varias líneas.

Tendría que reconocer las siguientes cadenas (las que están subrayadas):

Citar" Hola señores" "Comillas comillas y comillas" " "

"Reto de expresiones

regulares
elhacker.net
"

Iré revisando las respuestas para ver qué proponeis. Yo ya tengo la mía hecha, cuando alguien proponga alguna que lo resuelva posteo la mia.

Saludos.

Darkgold9


criskapunk

#13
^"[\w?\s?(\r\n)?]*"$

Edit: Me compliqué demasiado parece :xD No sabía que había que escapar las comillas, por eso no me funcionaba la expresión.

Un saludo.

Valkyr

Darkgold9 la tuya funciona perfectamente, lo único que puedo poner de pega es que la barra de escape no es necesaria, sería necesaria si por ejemplo estuviésemos programando y al crear una cadena de texto esa cadena contuviese comillas dentro, pero para las expresiones regulares como tal, no es necesario, aún así funciona correctamente. Te paso el testigo y te toca reto xD.

R0LFback la que propones no es correcta. Me parece que sobran las ?, además, al colocar el paréntesis lo toma como el carácter que es, no como un conjunto. Tampoco reconoce los que están en varías líneas.

Saludos a todos.

criskapunk

#15
Edito: Error mío, perdón.

Darkgold9

CitarDarkgold9 la tuya funciona perfectamente, lo único que puedo poner de pega es que la barra de escape no es necesaria, sería necesaria si por ejemplo estuviésemos programando y al crear una cadena de texto esa cadena contuviese comillas dentro, pero para las expresiones regulares como tal, no es necesario, aún así funciona correctamente. Te paso el testigo y te toca reto xD.

Lo tendre en cuenta thx  :).

Pues aqui va mi reto:

Expresion regular que reconozca una cadena con formato horario, es decir,
con el patrón HH:MM (H = hora, M= minuto) o bien con el patrón H:MM.
Tener en cuenta que las horas deben ser correctas. Por ejemplo: 29:80 no valdria.
Ejemplos:

01:00
00:00
23:50
2:38
...

Valkyr

Propongo la siguiente expresión regular:

(([0-1]\d|2[0-3])|\d):[0-5]\d

Reconoce los ejemplos que has puesto xD.

Saludos.

Darkgold9

CitarPropongo la siguiente expresión regular:

Código:
(([0-1]\d|2[0-3])|\d):[0-5]\d


Reconoce los ejemplos que has puesto xD.

Saludos.

Exacto, es exactamente la misma que habia hecho yo  :xD.

A ver si alguien mas se anima, te paso el poder >:D :laugh:


criskapunk

#19
Buenas chicos,

Esa expresión no valida bien. Devuelve lo siguiente:

0:00 Formato valido
00:00 Formato valido
23:59 Formato valido
24:00 Formato valido
100:00 Formato valido
12:000 Formato valido
8:10    Formato valido
08:10 Formato valido
001:05 Formato valido
99:00 Formato valido


Mi expresión es así (Hay que agregarle únicamente el ^ y $ :xD).

^([0-1]\d|2[0-3]|(\d)):([0-5]\d)$

0:00 Formato valido
00:00 Formato valido
23:59 Formato valido
24:00 Formato invalido
100:00 Formato invalido
12:000 Formato invalido
8:10 Formato valido
08:10 Formato valido
001:05 Formato invalido
99:00 Formato invalido


Les dejo el script que utilicé.

Código (php) [Seleccionar]
<?php

$cadenas 
= array (
0=>"0:00",
1=>"00:00",
2=>"23:59",
3=>"24:00",
4=>"100:00",
5=>"12:000",
6=>"8:10",
7=>"08:10",
8=>"001:05",
9=>"99:00",
);

$patron "/^([0-1]\d|2[0-3]|(\d)):([0-5]\d)$/";

for(
$i 0$i count($cadenas); $i++)
{
if (preg_match($patron$cadenas[$i]))
{
print $cadenas[$i];
print " Formato valido<br>";
} else
{
print $cadenas[$i];
print " Formato invalido<br>";
}
}

?>


Un saludo.