Я хочу принять список символов в качестве ввода от пользователя и отклонить остальные. Я могу принять форматированную строку или найти, если символ / строка отсутствует. Но как я могу принять только набор символов, в то время как отклонять все остальные символы. Я хотел бы использовать 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...