【问题标题】:Regular expression to match resources only contained at root正则表达式匹配仅包含在根目录中的资源
【发布时间】:2011-02-04 14:59:52
【问题描述】:

我的正则表达式知识缺乏,我正在尝试解决以下问题。

我想编写一个表达式以仅匹配 Web 应用程序根路径中的 HTML (*.html) 文件。例如

以下应匹配:

/myfile.html

以下内容不应匹配(包含子目录):

/home/myfile.html

我现在的表情:

^/(.*.html)$

不满意,因为它会匹配子目录中的文件。

谁能帮我解决这个问题?

谢谢,

安德鲁

【问题讨论】:

    标签: regex


    【解决方案1】:

    试试这个:

    ^/([^/]+\.html)$
    

    [^/]+ 将匹配除/ 之外的任何内容

    html 之前的点被转义为只匹配一个点而不匹配任何字符
    (参见 Andrea Spadaccini 的回答)

    【讨论】:

      【解决方案2】:

      您需要从 .* 子表达式中排除斜杠:

      ^/([^/]*\.html)$
      

      另外,你应该在 html 之前转义点,否则你会匹配任何以 html 结尾的东西,比如/testhtml

      【讨论】:

      • +1 非常好的点来逃避.html 中的.(现在在我的回答中更改了这个)
      【解决方案3】:

      使用[^/] 而不是点。括号构成一个字符类,插入符号表示该类将不匹配其后的任何字符。还要确保在文件扩展名之前转义您想要的文字点。

      这使得整个表达式^/([^/]*\.html)$

      【讨论】:

        【解决方案4】:

        您希望从表达式的 (.*) 部分中排除斜杠。此外,您应该转义引入文件扩展名的点。否则,它将匹配任何字符。

        ^/([^/]*\.html)$
        

        【讨论】:

          【解决方案5】:

          添加 ^/,表示字符串中的斜杠与正则表达式不匹配。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多