代码之家  ›  专栏  ›  技术社区  ›  bear

另一个正则表达式问题

  •  1
  • bear  · 技术社区  · 15 年前

    我正在尝试重写IIS中的URL,我有一个默认正则表达式:

    ^([^/]+)/?$
    

    然而,这确实让这样的事情发生了 business/profile.html business-profile.html 通过。

    我如何改变它,让它通过前者?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  3
  •   Robert P    15 年前

    如果你想理解和学习Regex,当你对它们所做的事情感到困惑时,学会分解它们的意思。这是同样的正则表达式,扩展格式。

    ^          # Start of the string
    (          # Take a group...
        [^/]+  # of one or more characters (the +) that are NOT the / character
    )          # end of the group
    /?         # an optional '/'
    $          # End of string
    

    所以这个正则表达式匹配:

    • / 其中的角色
    • / 最后呢

    要“修复”正则表达式,我们需要知道“通过”的真正含义。你是说“匹配正则表达式”吗

    (旁注:一个伟大的资源是 http://www.regular-expressions.info/ -它为regex的使用提供了一个很好的交叉工具参考和教程。)

        2
  •  2
  •   Alex Martelli    15 年前

    最初RE的目的似乎是“禁止任何带有斜杠的URL”(一个) 是可选的)。如果你的目的是“绝对禁止任何事”, ^(.*?)/?$ 应该与…一起工作 *?