我使用的是PHP版本5.3.27
我正在尝试让我的正则表达式匹配空格,而特殊字符如♦◘•♠♥☻,其他已知的特殊字符%$#& * @已经匹配,但不知何故我是之前提到的不匹配..
当前正则表达式
preg_match('/^[a-zA-Z0-9[:space:]]+$/', $login)
我就同一主题提出两个问题表示道歉。我希望这个对你来说足够清楚。
答案 0 :(得分:1)
您的正则表达式不包含对所提到的特殊字符的任何引用。您需要将它们包含在角色类中以便匹配它们。
要匹配这些特殊字符,您可以使用 unicode 值。
示例:强>
\u0000-\uFFFF
\x00-\xFF
顶部是UTF-16,底部是UTF-8。
在线参考UTF-8/16字符表,将符号与其unicode值匹配,然后创建一个范围以保持表达式简短。
答案 1 :(得分:1)
使用此
[\W]+
将匹配任何非单词字符。
答案 2 :(得分:0)
您可以使用与符号字符匹配的\p{S}
字符类(或\p{So}
)(包括此类字符:╭₠☪♛♣♫♫)我>:
preg_match('/^[a-zA-Z0-9\h\p{S}]+$/u', $login)
要查找更多可能性,您可以查看pcre文档:http://www.pcre.org/pcre.txt
如果您需要更精确,最好的方法是在字符类中使用字符范围。您可以找到字符here的代码。