繁体   English   中英

如何匹配除了“ - ”在PHP中的正则表达式所有特殊字符?

[英]How to match with regex all special chars except “-” in PHP?

我怎样才能匹配所有“特殊”字符(比如+_*&^%$#@!~ )除了char -在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}]
  • 请注意,Unicode Alphabetic字符属性还包括某些组合标记,例如U + 0345◌ᴄᴏᴍʙɪɴɪɴɢɢʀᴇᴇᴋʏᴘᴏɢᴇɢʀᴀᴍᴍᴇɴɪ。 我建议你还包括\\pM ,它匹配任何带有Unicode Mark字符属性的字符,这是一个主要的通用类别组; 也就是说,它匹配[\\p{Mn}\\p{Me}\\p{Mc}]
  • 字符U + 002Dʜʏᴘʜᴇɴ-ᴍɪɴᴜꜱ可能是-你所指的。
  • 请注意,Unicode v6.1有27个字符,带有Unicode Dash字符属性,包括U +2010ʜʏᴘʜᴇɴ,U +2013ᴇɴᴇɴ,U +2014ᴇᴍᴇᴍ和U +2212ᴍɪɴᴜꜱᴍɪɴᴜꜱ等常见字符。 无论你是否真的想要包含或排除这些,我都不知道。

鉴于这一切,你不可能想要这样的东西:

[^\pL\pN\pM\x2D\x{2010}-\x{2015}\x{2212}]

你可以尝试这种模式

([^a-zA-Z-])

这应匹配所有不是az字符和-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM