<?php
var_dump(preg_match('~[-abc]~', '-')); // possible au début
var_dump(preg_match('~[abc-]~', '-')); // possible à la fin
var_dump(preg_match('~[^-abc]~', 'A')); // possible juste aprés le caractère de négation de classe ^
var_dump(preg_match('~[a-z-0]~', '-')); // possible aprés un range
var_dump(preg_match('~[a-z-\s]~', '-')); // idem
var_dump(preg_match('~[a-z-0-9]~', '-')); // idem
// possible jusqu'à PHP 7.2 inclus
// mais interdit à partir de PHP 7.3
var_dump(preg_match('~[\s-0-9]~', '-')); // aprés un raccourci de classe de caractères
var_dump(preg_match('~[\p{N}-G]~', '-')); // aprés une classe UNICODE
var_dump(preg_match('~[[:xdigit:]-G]~', '-')); // aprés une classe POSIX
int(1)
int(1)
int(1)
int(1)
int(1)
int(1)
Warning: preg_match(): Compilation failed: invalid range in character class at offset 3 in /in/f99lc on line 13
bool(false)
Warning: preg_match(): Compilation failed: invalid range in character class at offset 6 in /in/f99lc on line 14
bool(false)
Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /in/f99lc on line 15
bool(false)