Если я правильно понимаю, вы хотите сопоставить 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