je dois tester une URL qu'il ne fin avec .asp
Expression régulière pour correspondre à une chaîne (1+ caractères) qui ne se termine pas dans .ext (extension)
Alors test
, test.html
et test.aspx
devrait correspondre, mais test.asp
ne devrait pas correspondre.
Normalement, vous souhaitez tester si l'URL fait fin avec .asp et rien au fait qu'il correspond à l'aide l'opérateur NOT dans le code:
if(!regex.IsMatch(url)) { // Do something }
Dans ce cas, l'expression régulière serait \.asp$
mais dans ce cas j'ai besoin de l'expression régulière pour aboutir à une correspondance.
Contexte: Je dois utiliser l'expression régulière comme dans l'itinéraire contraint la méthode d'extension ASP.NET MVC RouteCollection.MapRoute
. La route doit correspondre à tous les contrôleurs mais il devrait tomber à travers lorsque le contrôleur dans l'url se termine par .asp
La seconde a fait l'affaire, il faut que je fasse quelques tests avec plus d'urls, mais mes premiers tests unitaires passent maintenant, alors merci! –
+1 pour de bonnes informations. Tiny nit pick: le titre de la question note "1+ caractères" et je crois que vos deux premières regex correspondraient à des chaînes vides. –
Dans le contexte des contraintes de routage ASP.NET MVC, l'URL est inspectée en plusieurs parties: {controller}/{action}/{id} La regex doit correspondre à la partie {controller}, donc 'la fin' ne sera pas toujours être la fin de l'url, mais la fin de la partie {controller} de la fin. –