Как я могу сопоставить все «специальные» символы (например, +_*&^%$#@!~
), Кроме char -
in PHP?
Я знаю, что \W
будет соответствовать всем «специальным» символам, в том числе -
.
Любые предложения в отношении писем Unicode?
[^-]
– не специальный символ, который вы хотите [\W]
– все специальные символы, как вы знаете [^\w]
– все специальные символы – звучит честно? Таким образом, [^\w-]
представляет собой комбинацию обоих: всех «специальных» символов, но без -
.
\pL
соответствует любому символу с символьным символом Unicode Letter
, который является основной общей категорией; т. е. совпадает с [\p{Ll}\p{Lt}\p{Lu}\p{Lm}\p{Lo}]
. \pN
соответствует любому символу с свойством символов Unicode Number
, который является основной общей категорией; то есть он соответствует [\p{Nd}\p{Nl}\p{No}]
. Alphabetic
характер Юникода также включает в себя определенные комбинации меток, таких как U + 0345 ◌ ᴄᴏᴍʙɪɴɪɴɢ ɢʀᴇᴇᴋ ʏᴘᴏɢᴇɢʀᴀᴍᴍᴇɴɪ. Я предлагаю вам также включить \pM
, который соответствует любому символу с свойством символа Unicode Mark
, который является основной общей категорией; то есть он соответствует [\p{Mn}\p{Me}\p{Mc}]
. -
вы имеете в виду. Dash
, включая такие общие символы, как U + 2010 ʜʏᴘʜᴇɴ, U + 2013 ᴇɴ ᴅᴀꜱʜ, U + 2014 ᴇᴍ ᴅᴀꜱʜ и U + 2212 ᴍɪɴᴜꜱ ꜱɪɢɴ. Если вы действительно хотите включить или исключить их, я понятия не имею. Учитывая все это, маловероятно, что вы хотите что-то вроде:
[^\pL\pN\pM\x2D\x{2010}-\x{2015}\x{2212}]
Вы можете попробовать этот шаблон
([^a-zA-Z-])
Это должно соответствовать всем символам, которые не являются az
и -