我已经经历了很多文章,甚至是关于SO的问题,其中说明在PHP中,由于正则表达式使用字符串表示,因此必须转义所有反斜杠。但由于某种原因,以下内容返回true而不会失败:
preg_match('/^\w+\d+$/','abcdef123456')
如果我应该逃离\
,它怎么会起作用?这似乎是不必要的,但那么为什么每个人都这么说呢?
答案 0 :(得分:2)
根据PHP String - Manual - Single quoted:
要指定文字单引号,请使用反斜杠(\)对其进行转义。至 指定一个文字反斜杠,加倍(\\)。 所有其他实例 反斜杠将被视为字面反斜杠:这意味着 您可能习惯的其他转义序列,例如\ r或\ n,将是 按字面意思输出,而不是具有任何特殊含义。
答案 1 :(得分:1)
因为您使用的是单引号。实际上,使用双引号并不重要,因为\w
在PHP字符串中没有特殊含义,因此保留为\w
。