Foros del Web » Programación para mayores de 30 ;) » RegExp »

[SOLUCIONADO] Aceptar - en expresion regular

Estas en el tema de Aceptar - en expresion regular en el foro de RegExp en Foros del Web. Hola. Tengo esta expresion [a-z\/0-9_] Que entiendo que acepta letras de la a hasta la z, barras / numeros del 1 al 9 y guiones ...
  #1 (permalink)  
Antiguo 06/08/2013, 02:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Aceptar - en expresion regular

Hola. Tengo esta expresion
[a-z\/0-9_]

Que entiendo que acepta letras de la a hasta la z, barras / numeros del 1 al 9 y guiones bajos.

Lo que quiero es que acepte tamibien guiones como este: -

Me podríais decir como?.

Gracias.
  #2 (permalink)  
Antiguo 06/08/2013, 02:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Simplemente debes agregar el guión al inicio o final dentro del grupo de opciones, de otra forma daría un error de sintaxis en RegExp.

También puedes escapar el guión, por favor consulta una referencia de RegExp.

Cita:
# MAL

[a-z-0-9]

# BIEN
[a-z\-0-9]
[a-z0-9-]
[-a-z0-9]
PDTA: ya hay sub-foro de RegExp para que no tengas que preguntar en PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/08/2013, 04:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

Hola, gracias por responderme. La proxima vez lo tendre en cuenta, no sabia que habia un foro para expresiones regulares.

No me funciona lo que me has comentado. Enfocaré la pregunta de otra forma.

Como puedo conseguir una expresion regular que acepte:

letras minusculas y mayusculas de la A a la Z.
Numeros del 0 al 9
Guiones bajos (_)
Guiones medios (-)
Barras normales (/)

Todo esto en cualquier orden, es decir, valdría:

hola-que_tal/que-pasa/nada.
-44_hola-que/tal-55_pASA.

Etc, etc.

A ver si me podeis ayudar, por favor, porque tengo un cacao con las expresiones regulares de mucho cuidado.

Gracias.
  #4 (permalink)  
Antiguo 06/08/2013, 09:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Bueno, por favor no esperes a que te pidamos ver avances de lo que has hecho.

Es imposible adivinar que hiciste mal, y si no compartes nada pues nos quedamos igual que al principio, sé más inteligente por favor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/08/2013, 09:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

Esta bien, gracias por ayudarme, intentaré explicarlo de la mejor forma posible. Tengo esta expresion regular:

RewriteRule ^([a-z\/0-9_-]*)/.*PA-([a-z0-9]*).php$ index.php?accion=$1&page=$2 [L,QSA]

Para esta ruta funciona:

http://localhost/sitio/area_deportiv...-2014/PA-1.php

Para esta ruta tambien funciona:

http://localhost/sitio/torneos/tor_a...amora/PA-1.php

Pero para esta ruta no funciona:

http://localhost/sitio/torneos/tor_c...-2013/PA-1.php

Si a la expresion regular le quito el "-" de la primera regla, funcionan los enlaces 2 y 3, pero el 1 no.

Si dejo la expresion como está y le añado al tercer enlace una "I" entre la barra y t, es decir "2013/Itorn", funciona, aunque esta opción no es posible, el nombre no debe cambiarse.

Por eso me estoy volviendo loco por mas vueltas que le doy a la expresion regular.
  #6 (permalink)  
Antiguo 06/08/2013, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Vale, debo decir que las mismas reglas sintácticas en RegExp no son universales y dependen en detalle de la implementación del lenguaje anfitrión.

Me parece que al lidiar con RegExp en Apache debes escapar el guión también.

Deberías consultar una referencia de RegExp específica de Apache.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/08/2013, 15:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

Ya probé a escapar el -

RewriteRule ^([a-z\/0-9_\-]*)/.*PA-([a-z0-9]*).php$ index.php?accion=$1&page=$2 [L,QSA]

pero tiene el mismo comportamiento que sin escapar.

No tiene sentido esto.
  #8 (permalink)  
Antiguo 06/08/2013, 18:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Ya entiendo, al parecer nos estamos peleando con las RegExp sin sentido, ya que no estás teniendo ningún error de sintaxis ni nada parecido.

Es más bien tu configuración del .htaccess, el orden de aparición y precedencia de tus reglas las que no te dan los resultados esperados.

Si fuera un problema de la RegExp sencillamente obtendrías un error 500 pero no es así.

Deberías mostrar la configuración que tienes a ver si alguien ve lo que sucede.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 06/08/2013, 23:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

¿A que configuración te estas refiriendo?
  #10 (permalink)  
Antiguo 07/08/2013, 10:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Cita:
Iniciado por pateketrueke Ver Mensaje
Es más bien tu configuración del .htaccess, [...]
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/08/2013, 23:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

Ok. Te pongo el htaccess pero yo no se las pruebas que he hecho ya y los manuales que he leido en estos días y nada, tiene un comportamiento que no tiene sentido

Options -MultiViews
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} ^sitio.es
RewriteRule ^ http://www.sitio.es%{REQUEST_URI} [L,R=301]





#Cualquier pagina del menu con page
RewriteRule ^([a-z\/0-9_\-]*)/.*PA-([a-z0-9]*).php$ index.php?accion=$1&page=$2 [L,QSA]
  #12 (permalink)  
Antiguo 08/08/2013, 09:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aceptar - en expresion regular

Cita:
# MAL
^([a-z\/0-9_\-]*)/.*PA-([a-z0-9]*).php$
1. Si los grupos de caracteres no son opcionales no deberías usar * sino +

2. Si antes del "PA" y después de la barra / anterior no hay nada, entonces no hace falta especificar el .*

3. La diagonal no es especial y no es necesario escaparla

4. El punto es un carácter especial, si debe tomarse como literal también debe escaparse \.

Cita:
# BIEN
^([a-z/0-9_\-]+)/PA-([a-z0-9]+)\.php$
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 22/08/2013, 04:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Aceptar - en expresion regular

Hola.

Lo primero es pedirte disculpas por tardar tanto en contestar y lo segundo agradecerte las molestias que te has tomado.

Decirte que despues de darle muchas vueltas y al no tener sentido el funcionamiento de las instrucciones del htaccess, resulta que el problema no es del htaccess, es del sistema que uso que un momento determinado, no acepta -, es un poco largo de explicar.

Si sirve de algo, me han servido mucho tus instrucciones en cuando al lenguaje para htaccess.

Un saludo.

Etiquetas: aceptar, expresion, php, 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:07.