Mettere il - senza il backslash prima non e' un errore di sintassi, semplicemente indica un range di caratteri: quelli compresi (nell'ordine stabilito dall'encoding, per semplicita' diciamo la tabella ASCII) tra il carattere prima del trattino e quello dopo.

Per inserire un trattino in una character class (le quadre) bisogna metterlo come primo o come ultimo (o preceduto da un backslash)

codice:
/[|-<>]+/  SBAGLIATO
/[|\-<>]+/ CORRETTO
/[-|<>]+/  CORRETTO
/[|<>-]+/  CORRETTO