2013-10-09 14 views
9

ich einen regulären Ausdruck für meine Datei-Upload müssen nur wählen, Excel-Dateien ich das als meine Muster versucht mit (unten)C# Regex für die Dateiendung

Regex reg = new Regex("^.\.(xls|xlsx)"); 

Leider kann ich nicht entkommen die „\.“ Teil des Musters. Kann jemand mir eine Lösung dafür geben.

+0

haben Sie schon versucht, diese wie http://stackoverflow.com/questions/374930/validating-file-types-by-regular-expression – Ravi

+0

@Ravi das Problem im immer ist die Escape-Sequenz für "" – zxc

+0

Können Sie den vollständigen Code posten – Amit

Antwort

19

Eine bessere Methode wäre Path.GetExtension zu verwenden, dann die Ergebnisse vergleichen:

var filepath = @"C:\path\to\file.xls"; 
var extension = Path.GetExtension(filepath).ToUpper(); 

if (extension == ".XLS" || extension == ".XLSX") { 
    // is an Excel file 
} 

die ursprüngliche Frage zu beantworten, Dateipfade mit .xls oder .xlsx als Dateierweiterung zu entsprechen, verwenden Sie die folgende regex :

var regex = new Regex(@".*\.xlsx?$"); 
+0

kann ich angeben, Excel-Dateien nur mit diesem zu ermöglichen? – zxc

+0

Ja, überprüfen Sie einfach das Ergebnis von 'GetExtension' –

+1

diese Arbeit! tnx Kumpel! – zxc

3

Just another \ hinzufügen oder die @ vor der Zeichenfolge hinzufügen, wie so : "^.\\.(xls|xlsx)" oder @"^.\.(xls|xlsx)"

Auch unter der Annahme, ich bin, dass Sie mit dieser Regex, und nicht den tatsächlichen Dateinamen selbst, die Erweiterung der Datei ist werden passend, da das regex alles, was beginnt mit .xls oder .xlsx übereinstimmen.

+0

OK DIESE ARBEIT! TNX! – zxc