2010-03-25 4 views
3

Je veux une expression regex qui ne correspond qu'à une URL sans extension. En d'autres termes, si une extension est présente dans l'URL, ignorez-la complètement.Comment faire correspondre uniquement les URLs sans extension?

/(.+)/(.+) Ceci correspond à une URL avec et sans extension.

www.site.com/sports/cricket doit correspondre

www.site.com/sports/cricket.aspx ne doit pas correspondre

Merci à l'avance

+0

Qu'en est-il de www.site.com/sports.aspx/cricket? Et "/(.+)/(.+)" ne correspond pas à www.site.com. Est-ce intentionnel? – Jens

Répondre

0

Ce qui suit seul match cordes qui ont au moins deux / (par exemple votre regex), et ne disposent pas d'un . partout après la dernière /:

/(.+)/([^\./]+)$ 

Je recommanderais http://www.regular-expressions.info/ si vous voulez en savoir plus sur regexs.

0
^/(.+)/([^/.]*)$ 

correspond à une URL (sans domaine) qui ne contient aucun point après la dernière barre oblique.

EDIT: Adapté mieux à l'expression rationnelle originale.

+0

vous devez vous échapper. dans [^ /.], donc [^ \.] peut être? –

+2

Non, non. Le point est un point littéral à l'intérieur des classes de caractères. –

2
.+/[^./]*$ 

Ceci correspondra aux chaînes sans. after last/

Questions connexes