正则表达式阻止特殊字符

时间:2014-03-10 05:05:31

标签: php regex special-characters

我使用的是PHP版本5.3.27

我正在尝试让我的正则表达式匹配空格,而特殊字符如♦◘•♠♥☻,其他已知的特殊字符%$#& * @已经匹配,但不知何故我是之前提到的不匹配..

当前正则表达式

preg_match('/^[a-zA-Z0-9[:space:]]+$/', $login)

我就同一主题提出两个问题表示道歉。我希望这个对你来说足够清楚。

3 个答案:

答案 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的代码。