![](/img/trans.png)
[英]replace special characters in a string in PHP using regex except certain chars
[英]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}]
。 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
字符和-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.