PHPの文字+_*&^%$#@!~
を除くすべての「特別な」文字(-
など)を一致させるにはどうすればよいですか?
\W
は、-
を含むすべての「特別な」文字と一致することを知っています。
Unicode文字を考慮した提案はありますか?
\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-])
これは、a-z
および-
以外のすべての文字と一致する必要があります