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