preg_match допускаются только буквы, пробелы и тире и пробелы

Я знаю, что одно условие, которое im в настоящее время использует, где оно дает ошибку, если $ stringabc содержит что-либо, кроме чисел:

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

Я хочу условие if, где он дает ошибку, если $ stringdef содержит что-либо, кроме букв, пробелов и тире (-).

Это было бы:

 if(preg_match('/[^az\s-]/i',$stringabc)) 

для «ничего, кроме букв (az), пробелов (\ s, означает любой пробел) и дефиса (-)».

Также разрешить номера:

 if(preg_match('/[^0-9a-z\s-]/i',$stringabc)) 

Вы можете использовать что-то вроде:

 preg_match("/[^a-z0-9 -]/i", $stringabc) 

Если вы хотите остановить все пробелы, другим способом вы можете это сделать

 preg_match("/^[az[[:space:]]-]/i",$stringabc);