正则表达式匹配仅包含在root中的资源

时间:2011-02-04 14:59:53

标签: regex

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

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

以下内容应符合:

  

/myfile.html

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

  

/home/myfile.html

我目前的表达:

  

^ /(。*。HTML)$

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

有人可以帮我解决这个问题吗?

谢谢,

安德鲁

5 个答案:

答案 0 :(得分:4)

试试这个:

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

[^/]+将匹配/

以外的任何内容

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

答案 1 :(得分:3)

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

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

此外,您应该在html之前转义点,否则您将匹配以html结尾的任何内容,例如/testhtml

答案 2 :(得分:2)

使用[^/]代替点。括号构成一个字符类,而插入符表示该类不匹配任何字符。另外,请确保在文件扩展名之前转义所需的文字点。

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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