Регулярное выражение PHP

Я хочу принять список символов в качестве ввода от пользователя и отклонить остальные. Я могу принять форматированную строку или найти, если символ / строка отсутствует. Но как я могу принять только набор символов, в то время как отклонять все остальные символы. Я хотел бы использовать preg_match для этого.

например Допустимые символы: a..z, A..Z, -, '' Пользователь должен иметь возможность вводить эти символы в любом порядке. Но они не должны допускать использования, кроме этих символов.

Используйте отрицательный класс символов: [^ A-Za-z- \ w]

Это будет соответствовать только тому, если пользователь вводит что-то ДРУГОЕ, чем то, что находится в этом классе символов.

if (preg_match('/[^A-Za-z-\w]/', $input)) { /* invalid charcter entered */ } 

[A-Za-Z- \ ш]

[] скобки используются для группировки символов и ведут себя как один символ. поэтому вы также можете делать такие вещи, как […] + и т. д. также az, AZ, 0-9 определяют диапазоны, поэтому вам не нужно писать весь алфавит

Вы можете использовать следующее регулярное выражение: ^[a-zA-Z -]+$ .

^ Соответствует началу строки, что мешает ей совместить середину строки 123abc . $ Аналогично совпадает с концом строки, не позволяя ему совместить середину abc123 .
Скобки соответствуют каждому символу внутри них; az означает каждый символ между a и z . Чтобы соответствовать самому символу, поместите его в конец. ( [19-] соответствует 1 , 9 или [1-9] ; [1-9] соответствует каждому символу между 1 и 9 и не соответствует - ).
« + Сообщает, что он соответствует одному или нескольким вещам перед ним. Вы можете заменить символ + на * , что означает 0 или более, если вы также хотите сопоставить пустую строку.

Для получения дополнительной информации см. Здесь .

Вы бы посмотрели на отрицательный класс символов [] который оговаривает ваши допустимые символы, а затем проверяет соответствие.

 $pattern = '/[^A-Za-z\- ]/'; if (preg_match($pattern, $string_of_input)){ //return a fail } //Matt beat me too it...