用于检测文件扩展名的正则表达式


Regular Expression to detect a file extension

我需要一个正则表达式,它将从字符串中检测文件名-查看它是否以。pdf或。pdf结尾-不区分大小写。甚至应该匹配。pdf或任何pdf的变体,以防用户有混乱的文件名。

将在PHP 5中使用。我知道我可以针对每种情况制作一堆行来测试,但我肯定有更优雅的方法来做这件事。

使用正则表达式没有任何问题,但是也有一个现成的函数用于剖析路径并从中提取扩展名:

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

这个怎么样?我不知道你用的是什么语言但这里有一个正则表达式用于匹配任何以。pdf

结尾的内容
.+([.][Pp][Dd][Ff]){1}

我的坏。我半睡半醒。它是PHP。不懂PHP,但是正则表达式应该可以用

另一种可能性是降低

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

正如其他人注意到的那样,提取扩展名可以工作,否则您可以这样做。

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

如果字符串包含一个文件名,这里有一个简单的正则表达式解决方案:

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