我如何匹配除PHP 中+_*&^%$#@!~的字符之外的所有“特殊”字符(如 ) ?-
我知道这\W将匹配所有“特殊”字符,包括-.
考虑到 Unicode 字母有什么建议吗?
我如何匹配除PHP 中+_*&^%$#@!~的字符之外的所有“特殊”字符(如 ) ?-
我知道这\W将匹配所有“特殊”字符,包括-.
考虑到 Unicode 字母有什么建议吗?
[^-]不是你想要的特殊字符[\W]如你所知,都是特殊字符[^\w]都是特殊字符 - 听起来公平吗?因此[^\w-],两者的组合是:所有“特殊”字符但没有-.
\pL匹配任何具有 UnicodeLetter字符属性的字符,这是一个主要的通用类别组;也就是说,它匹配[\p{Ll}\p{Lt}\p{Lu}\p{Lm}\p{Lo}].\pN匹配任何具有 UnicodeNumber字符属性的字符,这是一个主要的通用类别组;也就是说,它匹配[\p{Nd}\p{Nl}\p{No}].Alphabetic字符属性还包括某些组合标记,例如 U+0345 ◌ͅ ᴄᴏᴍʙɪɴɪɴɢ ɢʀᴇᴇᴋ ʏᴘᴏɢᴇɢʀᴀᴍᴍᴇɴɪ。我建议您还包括\pM,它与具有 UnicodeMark字符属性的任何字符匹配,这是一个主要的通用类别组;也就是说,它匹配[\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的字符和-