Php 为什么这种未被替换的正则表达式模式有效?
我读过很多文章,甚至有很多问题,在PHP中,哪种状态是,因为正则表达式是用字符串表示的,所以必须避开所有反斜杠。但出于某种原因,以下结果返回true而不会失败:Php 为什么这种未被替换的正则表达式模式有效?,php,regex,string,escaping,Php,Regex,String,Escaping,我读过很多文章,甚至有很多问题,在PHP中,哪种状态是,因为正则表达式是用字符串表示的,所以必须避开所有反斜杠。但出于某种原因,以下结果返回true而不会失败: preg_match('/^\w+\d+$/','abcdef123456') 如果我要逃离\s,它怎么会起作用?这似乎没有必要,但为什么每个人都不这么说呢 要指定文字单引号,请使用反斜杠(\)将其转义。到 指定文字反斜杠,将其加倍(\\)的所有其他实例 反斜杠将被视为文字反斜杠:这意味着 您可能使用的其他转义序列,例如\r或\n,将
preg_match('/^\w+\d+$/','abcdef123456')
如果我要逃离\
s,它怎么会起作用?这似乎没有必要,但为什么每个人都不这么说呢
要指定文字单引号,请使用反斜杠(\)将其转义。到
指定文字反斜杠,将其加倍(\\)的所有其他实例
反斜杠将被视为文字反斜杠:这意味着
您可能使用的其他转义序列,例如\r或\n,将
按规定逐字输出,而不是有任何特殊含义
因为你用的是单引号。事实上,在这里使用双引号并不重要,因为
\w
在PHP字符串中没有特殊意义,因此被保留为\w
所有的语言解析器都没有在双引号字符串中去掉转义符吗?不,至少PHP没有。反斜杠是文字,除非后面的字符有意义。