我需要一个正则表达式为我的文件上传只选择Excel文件,我试图使用这个作为我的模式(如下)
Regex reg = new Regex("^.\.(xls|xlsx)");
不幸的是,我无法摆脱模式中的“.”部分。
xmq68pz91#
更好的方法是使用Path.GetExtension,然后比较结果:
var filepath = @"C:\path\to\file.xls"; var extension = Path.GetExtension(filepath).ToUpper(); if (extension == ".XLS" || extension == ".XLSX") { // is an Excel file }
要回答最初的问题,要匹配以.xls或.xlsx作为文件扩展名的文件路径,请使用以下正则表达式:
.xls
.xlsx
var regex = new Regex(@".*\.xlsx?$");
n53p2ov02#
只需添加另一个\或在字符串前面添加@,如下所示:"^.\\.(xls|xlsx)"或@"^.\.(xls|xlsx)"此外,我假设您将匹配文件的扩展名与该正则表达式,而不是实际的文件名本身,因为该正则表达式将匹配 * 以.xls或.xlsx开头的任何内容。
\
@
"^.\\.(xls|xlsx)"
@"^.\.(xls|xlsx)"
2条答案
按热度按时间xmq68pz91#
更好的方法是使用Path.GetExtension,然后比较结果:
要回答最初的问题,要匹配以
.xls
或.xlsx
作为文件扩展名的文件路径,请使用以下正则表达式:n53p2ov02#
只需添加另一个
\
或在字符串前面添加@
,如下所示:"^.\\.(xls|xlsx)"
或@"^.\.(xls|xlsx)"
此外,我假设您将匹配文件的扩展名与该正则表达式,而不是实际的文件名本身,因为该正则表达式将匹配 * 以
.xls
或.xlsx
开头的任何内容。