正则表达式以检测文件扩展名

时间:2011-04-13 22:33:54

标签: php regex

我需要一个正则表达式来检测字符串中的文件名 - 看看它是以.pdf还是.PDF结尾 - 不区分大小写。甚至应该匹配.Pdf或pdf的任何变体,以防用户使用凌乱的文件名。

这将在PHP 5中使用。我知道我可以制作一堆行来测试每个案例,但我确信有一个更优雅的方法来做到这一点。

5 个答案:

答案 0 :(得分:9)

正则表达式没有任何问题,但还有ready-made function用于剖析路径并从中提取扩展名:

echo pathinfo("/path/to/myfile.txt", PATHINFO_EXTENSION); //.txt

答案 1 :(得分:0)

这个怎么样。我不知道你使用的是哪种语言,但这里有一个正则表达式,用于匹配以.pdf结尾的任何内容

.+([.][Pp][Dd][Ff]){1}

我的坏。我半睡半醒。这是PHP。 不知道PHP,但正则表达式应该工作

答案 2 :(得分:0)

另一种可能性是延长

strtolower(pathinfo("/path/file.pDf", PATHINFO_EXTENSION)) == ".pdf"

答案 3 :(得分:0)

正如其他人所说,提取扩展名会有效,否则你可以做这样的事情。

preg_match('/.*\.pdf/i', "match_me.pDf", $matches);

答案 4 :(得分:0)

如果您的字符串由单个文件名组成,则这是一个简单的正则表达式解决方案:

if (preg_match('/\.pdf$/i', $filename)) {
   // Its a PDF file
}