Как мне сопоставить все «специальные» символы (например, +_*&^%$#@!~), кроме символа - в PHP?
+_*&^%$#@!~
-
Я знаю, что \W будет соответствовать всем «специальным» символам, включая -.
\W
Есть ли какие-либо предложения по рассмотрению букв Unicode?
[^-]
[\W]
[^\w]
Таким образом, [^\w-] является комбинацией обоих: всех «специальных» символов, но без -.
[^\w-]
\pL
Letter
[\p{Ll}\p{Lt}\p{Lu}\p{Lm}\p{Lo}]
\pN
Number
[\p{Nd}\p{Nl}\p{No}]
Alphabetic
\pM
Mark
[\p{Mn}\p{Me}\p{Mc}]
Dash
Учитывая все это, не исключено, что вы хотите что-то вроде:
[^\pL\pN\pM\x2D\x{2010}-\x{2015}\x{2212}]
Вы можете попробовать этот шаблон
([^a-zA-Z-])
Это должно соответствовать всем символам, которые не a-z и -
a-z