【问题标题】:Regex for matching URL with no extension and with specific word in it用于匹配没有扩展名且包含特定单词的 URL 的正则表达式
【发布时间】:2017-05-28 20:10:04
【问题描述】:

我收到这样的网址:http://blog.test.com/post/2017/1/testpost-blog-January

我想创建一个正则表达式模式来匹配一个带有 no 扩展名并带有 post 字样的 URL。

[示例]

http://blog.test.com/post/2017/1/testpost-blog-January -> 匹配

http://blog.test.com/post/2017/1/testpost-blog-January.aspx -> 不匹配

http://blog.test.com/Testpage.aspx -> 不匹配

到目前为止我已经尝试过:

(?=.*^([^.]+)$)(?=.*post)

这不工作。

你知道如何正确地重写我的模式吗?

谢谢:)

【问题讨论】:

  • 试试^(?=.*post)(?!.*\.[^/.]+$).*
  • 有点对,我只需要转义正斜杠:^(?=.*post)(?!.*\.[^\/.]+$).* 谢谢跨度>
  • 在 ASP.NET 中,您不必转义 /,仅当您使用 / 正则表达式分隔符内的模式时才需要。

标签: asp.net regex iis url-rewriting


【解决方案1】:

您需要像这样修复前瞻:

^(?=.*post)(?!.*\.[^\/.]+$).*

参见regex demo(在演示中,\n 被添加到否定字符类中,因为它是一个多行演示。)

详情

  • ^ - 字符串开头
  • (?=.*post) - 正向前瞻要求字符串在任何 0+ 个字符之后有一个 post 文字字符序列
  • (?!.*\.[^\/.]+$) - 如果在任何 0+ 个字符之后有一个点后跟 1+ 个字符而不是 /. 直到字符串的末尾,则将导致匹配失败
  • .* - 匹配模式获取整行。

【讨论】:

    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多