14

PHP+_*&^%$#@!~の文字を除くすべての「特別な」文字(など)を一致させるにはどうすればよいですか?-

私はそれ\Wがを含むすべての「特別な」文字と一致することを知ってい-ます。

Unicode文字を考慮した提案はありますか?

4

3 に答える 3

52
  • [^-]あなたが望む特殊文字ではありません
  • [\W]ご存知のようにすべて特殊文字です
  • [^\w]すべての特殊文字も同様です-公平に聞こえますか?

したがって[^\w-]、両方の組み合わせがあります。すべての「特殊」文字ですが、。はありません-

于 2012-03-15T20:06:30.660 に答える
6
  • \pLLetter主要な一般カテゴリグループであるUnicode文字プロパティを持つ任意の文字に一致します。つまり、に一致し[\p{Ll}\p{Lt}\p{Lu}\p{Lm}\p{Lo}]ます。
  • \pNNumber主要な一般カテゴリグループであるUnicode文字プロパティを持つ任意の文字に一致します。つまり、に一致し[\p{Nd}\p{Nl}\p{No}]ます。
  • UnicodeAlphabetic文字プロパティには、U +0345◌ͅᴄᴏᴍʙɪɴɪɴɢɢʀᴇᴇᴋʏᴘᴏɢᴇɢʀᴀᴍᴍᴇɴɪなどの特定の結合文字も含まれていることに注意してください。主要な一般カテゴリグループであるUnicode文字プロパティ\pMを持つ任意の文字に一致するを含めることをお勧めします。Markつまり、に一致し[\p{Mn}\p{Me}\p{Mc}]ます。
  • 文字U+002Dʜʏᴘʜᴇɴ-ᴍɪɴᴜꜱはおそらく-あなたが参照しているものです。
  • ただし、Unicode v6.1には、U + 2010ʜʏᴘʜᴇɴ、U + 2013ᴇɴᴅᴀꜱʜ、U + 2014ᴇᴍᴅᴀꜱʜ、U + 2212ᴍɪɴなどの一般的な文字を含む、Unicode文字プロパティを持つ27文字があることに注意してください。Dash実際にそれらを含めたいのか除外したいのか、私にはわかりません。

それをすべて考えると、次のようなものが必要になる可能性はほとんどありません。

[^\pL\pN\pM\x2D\x{2010}-\x{2015}\x{2212}]
于 2012-03-16T00:56:20.717 に答える
4

このパターンを試すことができます

([^a-zA-Z-])

これは、そうでないすべての文字と一致する必要がa-zあります。-

于 2012-03-15T19:52:01.073 に答える