用于多种语言的 ASP.NET 路由的正则表达式
我需要编写正则表达式,将其用于 asp.net 路由约束,该约束应匹配任何单词。问题是单词可以用任何语言书写,例如
- test
- some-other-test
- one-more-трудно-получить-result
谢谢帮助。
I need to write regex which I will use for asp.net routing constraint which should match any word. The problem is that words could be written in any language, for example
- test
- some-other-test
- one-more-трудно-получить-result
Thx for help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我理解正确的话,您想要匹配一个包含单词的网址并将其传递给您的路线,但该单词可能有多种语言。
默认情况下,Asp.net MVC 路由适用于任何语言。例如这样的路由:
将匹配类似“/controller/action/one-more-трудно-получить-result”的 url。 ID 参数将保存值“one-more-трудно-получить-result”。
如果您希望限制路由,使其仅匹配任何语言的单词(无数字),那么这是您的正则表达式:
以下是您的路由方式:
\p{L} 将匹配任何语言的任何类型的字母。 \p{M} 将匹配任何要与另一个字符组合的字符(例如重音符号、变音符号、封闭框等)。此路由将匹配类似“/controller/action/one-more-трудно-получить-result”的 url,但不匹配“/controller/action/one-more-трудно-по12341лучить-result”。
仅供参考,\p{N} 用于匹配任何数字,\p{P} 用于匹配标点符号,\p{C} 用于匹配不可见的控制字符和未使用的代码点。
资源:
http://www.regular-expressions.info/unicode.html
If I'm understanding correctly, you want to match a url that has a word in it and pass that to your route, but the word could be in multiple languages.
By default an Asp.net MVC Route will work with any language. For example a route like this:
Will match a url like "/controller/action/one-more-трудно-получить-result". The ID parameter will hold the value "one-more-трудно-получить-result".
If you are looking to limit the route so it only matches words (no numbers) from any language then here is your regex:
And here is how you would route this:
The \p{L} will match any kind of letter from any language. The \p{M} will match any character intended to be combined with another character (e.g. accents, umlauts, enclosing boxes, etc.). This route will match a url like "/controller/action/one-more-трудно-получить-result" but not "/controller/action/one-more-трудно-по12341лучить-result".
Just an FYI the \p{N} is used to match any number, \p{P} is for punctuation, and \p{C} if for invisible control characters and unused code points.
Resources:
http://www.regular-expressions.info/unicode.html