Dann war Unner's Deutung korrekt?
Nein.
preg_match('/^[_a-zA-Z0-9-]/')
Alle Zeichen außer „_“,a bis z, A bis Z, 0 bis 9 und „-“.
Ist das nun korrekt?
Nein. Der Regex bedeutet: am Anfang des Strings ein _, a-z, A-Z, 0-9 oder -
Dann war Unner's Deutung korrekt?
Nein.
preg_match('/^[_a-zA-Z0-9-]/')
Alle Zeichen außer „_“,a bis z, A bis Z, 0 bis 9 und „-“.
Ist das nun korrekt?
Nein. Der Regex bedeutet: am Anfang des Strings ein _, a-z, A-Z, 0-9 oder -