preg_match ("/[-_^%&().A-Z0-9]/", $file)
По внешнему виду, я вижу, что хвост – это Anything AZ и 0-9, но не уверен в начале. Поскольку ^ не экранируется, поэтому он может быть буквальным «^» или оцениваться как «NOT», а также «.», «(» И «)». Поэтому я немного смущен. Имеет ли вещи внутри опционального [] означает, что вещи буквализованы?
Он просто ищет один из символов в классе символов. Т.е. один из:
^
только интерпретируется как отрицающий класс символов, когда в самом начале класса. .
полностью утрачивает свое особое значение внутри классов персонажей. Так что да, в классах символов многие специальные символы регулярного выражения используются буквально. С исключениями, хотя следующий список не является исчерпывающим:
-
) указывает диапазон, когда между двумя другими символами (т.е. не в начале или в конце). ^
), как описано выше. \w
), которые образуют объединение с символами этого класса. Таким образом, ваш характерный класс можно сократить до [-^%&().\w]
. ^
только имеет особое значение внутри []
если это первый символ.
-
имеет смысл только внутри []
если между двумя буквальными символами .
.
, (
и )
не имеют особого значения внутри []
.
Просто прочитав основную информацию в документах , вы все это расскажете.
Регулярное выражение просто соответствует одному из символов в классе.