2012-01-18 23 views
8

Estoy tratando de igualar: partido expresión regular para la final opcional slash

/app 
/app/ 
/app/** 

pero no:

/app** 

La barra final debería ser opcional. No puedo hacer que funcione.

^/app/([^/]*)/? coincide con /app/ y /app/**, pero no /app.

+0

'' ** significa cualquier camino como en '/ app/**' podría ser '/ app/a/ruta/a/something'? O '**' literalmente? – lkuty

+0

sí, cualquier ruta coincidiría (como su ejemplo de/app/a/ruta/a/algo). ¿Hay algún tipo de expresiones regulares que dice "o terminan aquí o tienen este carácter (/) y todo lo demás. Intenté terminar con un o pero eso tampoco funcionó. – MoatMonster

Respuesta

7

Prueba esto:

^\/app((\/\w+)+|\/?)$ 
+0

¡eso está muy cerca! pero dado que solo coincide con los caracteres de las palabras,/app/whatever/another/path no coincidirá. Veo a dónde vas, sin embargo. Trabajaré con eso y veré qué puedo hacer. ¡Gracias! – MoatMonster

+6

En ese caso, intente algo más simple como '# ^/app (/.*)?$#' – cmbuckley

+1

wow. eso estuvo totalmente frente a mi cara todo el tiempo. muchas gracias, @cbuckley! – MoatMonster

5

Esto funcionará:

^/app(/[^/]*)? 

edición: Esto también funcionará:

^/app(/.*)? 
+0

gracias, pero eso aún coincidirá con/app ** – MoatMonster

+1

no, no lo hará, debido a la barra diagonal en la parte opcional –

+0

Pero no permitirá/app/foo/bar – cmbuckley

0

Has probado esto:

^/app(/[^/]+)*/? 

I'not seguro sobre el ** - Cosa, pero ¿realmente puedes necesitar algo como esto?

^/app/?(/[^/]+)*/?$ 
+0

gracias, pero eso todavía coincidirá con/app **. Quiero hacer coincidir exactamente/app,/app /, o/app/cualquier cosa **. Estoy luchando para fingir la expresión regular que dice "aquí debes tener un final". – MoatMonster

+0

¿Qué es ** aquí? ¿Algunos caracteres aleatorios o dos * * consecutivos? – Mithrandir

+0

cualquier carácter aleatorio. perdón por la falta de descripción. – MoatMonster

0
^/(app1|app2)(?:/(.*))?$ 

partidos todo el siguiente

/app1 o /app1/ o /app1/whatever
/app2 o /app2/ o /app2/whatever

^/app(?:/(.*))?$ 

coincidirá
/app o /app/ o /app/whatever

Cuestiones relacionadas