哪些字符与PHP的PCRE完全匹配\?

时间:2013-11-18 15:05:13

标签: php pcre

manual page对此保持沉默,尽管用户在其下方发布了评论,其中指出了ASCII代码为0x090x0A0x0C的字符, 0x0D0x20,即TAB,LF,FF,CR和SPACE,被识别为“空格”,但没有给出来源。

如果PCRE与Perl兼容,显然,这可能不是那么简单,如this Perl documentation中所述。事实上,它可能会受到语言环境的影响,然后开始变得毛茸茸。

上下文是我正在尝试替换一个preg_match调用,该调用旨在检查仅空白字符串。

2 个答案:

答案 0 :(得分:3)

根据PHP docs

  

空格字符是HT(9),LF(10),VT(11),FF(12),CR(13)和空格(32)。请注意,此列表包含VT字符(代码11)。这使得“空间”与\ s不同,后者不包括VT(用于Perl兼容性)。

答案 1 :(得分:1)

来自the PCRE documentation

  

在PCRE中,默认情况下,\d\D\s\S\w\W仅识别ASCII字符,即使在UTF模式下也是如此。但是,可以通过设置PCRE_UCP选项来更改此选项。

根据this StackOverflow answer,当使用PCRE_UCP修饰符时,PCRE_UTF8选项与u一起设置。

因此,如果您不使用u修饰符,则\s将仅匹配ASCII空白字符。如果你这样做,那确实会更复杂。

相关问题