preg_match apenas letras, espaços e traços e espaços permitidos

Eu sei que uma condição que estou atualmente usando onde dá um erro se $ stringabc contém qualquer coisa, mas números é:

if(preg_match("/[^0-9]/",$stringabc))

Eu quero uma condição if, onde ele dá um erro se $ stringdef contém qualquer coisa, mas letras, espaços e traços (-).