Was ist das (JavaScript) Regular Expression soll ich eine Zeichenfolge verwenden, um sicherzustellen ist ein gültiger Dateiname?

StackOverflow https://stackoverflow.com/questions/130837

  •  02-07-2019
  •  | 
  •  

Frage

Ich lerne immer noch RegEx im Moment, aber für die Zeit, dass jemand ihm Wesen könnte mit diesem helfen? Ich habe ein paar speziellen Anforderungen für die Formatierung der Zeichenfolge:

  1. Keine Verzeichnisse. Nur die Dateinamen.
  2. Dateiname muss klein geschrieben werden.
  3. müssen Whitespaces mit Unterstrichen ersetzt werden.

Sollte nicht schwer sein, aber ich bin Zeitnot und ich bin auf dem ‚richtigen‘ Weg nicht sicher, ob ein gültigen Dateinamen, um sicherzustellen, (nämlich vergessen, dass ich die Zeichen sollte für Dateinamen ungültig sein).

War es hilfreich?

Lösung

Und eine einfache Kombination von RegExp und anderer Javascript ist, was ich empfehlen würde:

var a = "c:\\some\\path\\to\\a\\file\\with Whitespace.TXT";
a = a.replace(/^.*[\\\/]([^\\\/]*)$/i,"$1");
a = a.replace(/\s/g,"_");
a = a.toLowerCase();
alert(a);

Andere Tipps

Wenn Sie in einer super-schnellen Eile sind, können Sie in der Regel akzeptabel reguläre Ausdrücke in der Bibliothek unter http finden: // regexlib.com/ . Bearbeiten zu sagen:. hier ein, das funktionieren könnte für Sie

Wenn Sie einen String-Pfad von dem Benutzer nehmen (z. B. durch die .value eines Datei-Upload-Feld zu lesen), können Sie nicht wirklich sicher sein, was der Pfad Trennzeichen ist. Es könnte ein Backslash (Windows), Schrägstrich (Linux, OS X, BSD etc.) oder etwas ganz anderes auf alten oder obskuren OSs sein. Die Aufteilung der Pfad entweder vorwärts oder umgekehrten Schrägstrich werden die häufigsten Fälle abdecken, aber es ist eine gute Idee, die Möglichkeit für den Benutzer umfassen den Dateinamen für den Fall außer Kraft setzen wir falsch geraten.

Wie für ‚ungültige Zeichen‘ hängen diese auch auf dem Betriebssystem. Die wahrscheinlich einfachste Weg ist es, alle nicht-alphanumerische Zeichen mit einem Platzhalter wie ein Unterstrich zu ersetzen.

Hier ist, was ich benutze:

var parts= path.split('\\');
parts= parts[parts.length-1].split('/');
var filename= parts[parts.length-1].toLowerCase();
filename= filename.replace(new RegExp('[^a-z0-9]+', 'g'), '_');
if (filename=='') filename= '_'

Ich würde überprüfen die RegEx Bibliothek .

Sie können aus einer beliebigen Anzahl von vorkonfigurierten regulären Ausdrücken von unterschiedlichem Grad der Robustheit wählen Sie Ihre Bedürfnisse anpassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top