Si può fare di meglio!

eregi("[^a-zA-Z0-9-]"

Vogliamo ad esempio che inizi solo e solamente con caratteri alfanumerici, quindi:


^[A-Za-z0-9] //primo carattere

poi vogliamo invece che possa inserire anche dei caratteri speciali, quindi:

[A-Za-z0-9\.\-]* //nota l'asterisco

infine vogliamo che non termini con un trattino o un punto.

[A-Za-z0-9]$ //ultimo carattere

Ora montiamola:

^[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]$

Fine!