Ich habe ein .NET-Webformular mit einem Steuerelement zum Hochladen von Dateien, das an einen Validator für reguläre Ausdrücke gebunden ist. Dieser Validator muss überprüfen, ob nur bestimmte Dateitypen zum Hochladen zugelassen werden sollen (jpg, gif, doc, pdf).
Der aktuelle reguläre Ausdruck, der dies tut, lautet:
^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF|.doc|.DOC|.pdf|.PDF)$
Dies scheint jedoch nicht zu funktionieren ... kann mir jemand ein wenig Hilfe geben?
Antworten:
Ihre Regex scheint meiner Meinung nach etwas zu komplex. Denken Sie auch daran, dass der Punkt ein Sonderzeichen ist, das "beliebiges Zeichen" bedeutet. Der folgende reguläre Ausdruck sollte funktionieren (beachten Sie die maskierten Punkte):
Sie können ein Tool wie Expresso verwenden , um Ihre regulären Ausdrücke zu testen.
quelle
Akzeptiert DOC-, DOCX- und PDF-Dateien mit einem Dateinamen von mindestens einem Zeichen:
^ = beginning of string .+ = at least one character (any character) \. = dot ('.') (?:pattern) = match the pattern without storing the match) [dD] = any character in the set ('d' or 'D') [xX]? = any character in the set or none ('x' may be missing so 'doc' or 'docx' are both accepted) | = either the previous or the next pattern $ = end of matched string
Warnung! Ohne die gesamte Kette von Erweiterungen in (? :) einzuschließen, würde eine Erweiterung wie .docpdf übergeben.
Sie können reguläre Ausdrücke unter http://www.regextester.com/ testen.
quelle
Möchten Sie nur überprüfen, ob die Datei eine bestimmte Erweiterung hat? Sie können vereinfachen, was Sie mit so etwas tun möchten:
Wenn Sie dann IsMatch () aufrufen, müssen Sie RegexOptions.IgnoreCase als zweiten Parameter übergeben. Es gibt keinen Grund, die Varianten für das Gehäuse auflisten zu müssen.
Bearbeiten: Wie Dario erwähnt, funktioniert dies für den RegularExpressionValidator nicht, da keine Gehäuseoptionen unterstützt werden.
quelle
Sie können Groß- und Kleinschreibung in den regulären Ausdruck wie folgt einbetten:
quelle
Sie können diese Vorlage für jeden Dateityp verwenden:
ValidationExpression="^.+\.(([pP][dD][fF])|([jJ][pP][gG])|([pP][nN][gG])))$"
Zum Beispiel: Sie können (
[rR][aA][rR]
) für den Dateityp Rar hinzufügen und ...quelle
Ihr regulärer Ausdruck scheint sowohl den Dateinamen als auch die Erweiterung zu überprüfen. Benötigen Sie das? Ich gehe davon aus, dass es nur die Erweiterung ist und würde einen regulären Ausdruck wie diesen verwenden:
Stellen Sie die Übereinstimmung so ein, dass die Groß- und Kleinschreibung nicht berücksichtigt wird.
quelle