Это действительно зависит от вашего регулярного выражения.
... предоставляет только одну операцию набора простых символов: вычитание . Этого достаточно для вашего примера, поэтому вы можете просто использовать
[\w-[_]]
. Если за -
следует вложенный класс символов, он вычитается. Просто как это ...
... предоставляет гораздо более богатый набор функций набора символов символа . В частности, вы можете получить пересечение двух наборов, таких как [[abc]&&[cde]]
(что в данном случае даст c
). Пересечение и отрицание вместе дают вам вычитание:
[\w&&[^_]]
... (которые поддерживают lookaheads) позволяют вам имитировать вычитание с помощью отрицательного вида:
(?!_)\w
Это сначала проверяет, что следующий символ не является _
, а затем соответствует любому \w
(который не может быть _
из-за негативного просмотра).
Обратите внимание, что каждый из этих подходов является полностью общим, поскольку вы можете вычесть два произвольно сложных класса символов.
После дальнейшего тестирования выяснилось, что в моей cpanel не было включено nd_mysqli. Включение, которое решило проблему. Спасибо RiggsFolly за помощь