当前位置:  开发笔记 > 编程语言 > 正文

正则表达式匹配不以.ext(扩展名)结尾的字符串(1+个字符)

如何解决《正则表达式匹配不以.ext(扩展名)结尾的字符串(1+个字符)》经验,为你挑选了1个好方法。

我需要测试一个它没有结束的网址.asp

所以test,test.htmltest.aspx应该匹配,但test.asp应该不匹配.

通常你会测试url 是否以.asp结尾,并否定它在代码中使用NOT运算符匹配的事实:

if(!regex.IsMatch(url)) { // Do something }

在那种情况下,正则表达式将是,\.asp$但在这种情况下,我需要正则表达式导致匹配.


背景:我需要在ASP.NET MVC RouteCollection.MapRoute扩展方法中使用正则表达式作为路由约束.路由需要匹配所有控制器,但是当url中的控制器以.asp结尾时,它应该通过



1> Jan Goyvaert..:

诀窍是使用负面的lookbehind.

如果您只需要一个是/否答案:

(?

如果您需要匹配整个网址:

^.*(?

这些正则表达式适用于URL末尾出现文件名的任何URL(即没有查询或片段的URL).我假设您的网址符合此限制,因为您的问题中包含正则表达式.asp $.如果您希望它与所有网址一起使用,请尝试以下操作:

^[^#?]+(?

或者,如果您希望正则表达式匹配整个URL:

^[^#?]+(?

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有