为什么这种未转义的正则表达式模式有效?

时间:2014-03-08 17:46:45

标签: php regex string escaping

我已经经历了很多文章,甚至是关于SO的问题,其中说明在PHP中,由于正则表达式使用字符串表示,因此必须转义所有反斜杠。但由于某种原因,以下内容返回true而不会失败:

preg_match('/^\w+\d+$/','abcdef123456')

如果我应该逃离\,它怎么会起作用?这似乎是不必要的,但那么为什么每个人都这么说呢?

2 个答案:

答案 0 :(得分:2)

根据PHP String - Manual - Single quoted

  

要指定文字单引号,请使用反斜杠(\)对其进行转义。至   指定一个文字反斜杠,加倍(\\)。 所有其他实例   反斜杠将被视为字面反斜杠:这意味着   您可能习惯的其他转义序列,例如\ r或\ n,将是   按字面意思输出,而不是具有任何特殊含义。

答案 1 :(得分:1)

因为您使用的是单引号。实际上,使用双引号并不重要,因为\w在PHP字符串中没有特殊含义,因此保留为\w