Regex для маршрутизации asp.net на нескольких языках - PullRequest
3 голосов
/ 19 августа 2011

Мне нужно написать регулярное выражение, которое я буду использовать для ограничения маршрутизации asp.net, которое должно соответствовать любому слову. Проблема в том, что слова могут быть написаны на любом языке, например

  1. тест
  2. некоторые-другие-тест
  3. один-более-трудно-получить-результат

Спасибо за помощь.

1 Ответ

2 голосов
/ 25 августа 2011

Если я правильно понимаю, вы хотите сопоставить URL-адрес, в котором есть слово, и передать его в свой маршрут, но слово может быть на нескольких языках.

По умолчанию Asp.net MVC Route будет работать с любым языком.Например, маршрут, подобный следующему:

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = "" } 
            );

Будет соответствовать URL-адресу типа "/ controller / action / one-more-трудно-получить-result".Параметр ID будет содержать значение «one-more-трудно-получить-result».

Если вы хотите ограничить маршрут так, чтобы он совпадал только со словами (без цифр) из любого языка, то вот ваше регулярное выражение:

[\p{L}\p{M}-]+

И вот как вы могли бы маршрутизировать это:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = "default" },
            new { id = @"[\p{L}\p{M}-]+" }
        );

\ p {L} будет соответствовать буквам любого типа на любом языке.\ P {M} будет соответствовать любому символу, предназначенному для объединения с другим символом (например, ударения, умлауты, заключенные в рамки и т. Д.).Этот маршрут будет соответствовать URL-адресу типа "/ controller / action / one-more-трудно-получить-result", но не будет /controller/action/one-more-труднопо12341лучить-result".

ПростоК вашему сведению \ p {N} используется для сопоставления с любым числом, \ p {P} для пунктуации и \ p {C} для невидимых управляющих символов и неиспользуемых кодовых точек.

Ресурсы: http://www.regular -expressions.info / unicode.html

...