Ich möchte prüfen, ob eine Zeichenkette ein Dateiname ist (name DOT ext) oder nicht.
Name der Datei darf nicht enthalten / ? * : ; { } \
Könnten Sie mir bitte den Regex-Ausdruck vorschlagen, der in preg_match() zu verwenden ist?
Ich möchte prüfen, ob eine Zeichenkette ein Dateiname ist (name DOT ext) oder nicht.
Name der Datei darf nicht enthalten / ? * : ; { } \
Könnten Sie mir bitte den Regex-Ausdruck vorschlagen, der in preg_match() zu verwenden ist?
Die Regex würde etwa so lauten (für eine Erweiterung mit drei Buchstaben):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
PHP benötigt Backslashes, die escaped werden, und preg_match()
müssen Schrägstriche vermieden werden, also:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
Um Dateinamen wie "hosts"
o ".htaccess"
verwenden Sie diesen leicht abgewandelten Ausdruck:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
Hier ist eine einfach zu verwendende Lösung mit spezifischen Dateierweiterungen:
$file = 'file-name_2020.png';
$extensions = array('png', 'jpg', 'jpeg', 'gif', 'svg');
$pattern = '/^[^`~!@#$%^&*()+=[\];\',.\/?><":}{]+\.(' . implode('|', $extensions). ')$/u';
if(preg_match($pattern, $discount)) {
// Returns true
}
Beachten Sie, dass in diesem Szenario nur folgende Sonderzeichen zulässig sind -
y _
. Um mehr zuzulassen, entfernen Sie sie einfach aus $pattern
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.