Preg匹配正斜杠

时间:2015-11-25 23:07:54

标签: php regex

我正在尝试匹配008 /

preg_match('/008\\//i', '008/', $matches);
preg_match('/008\//i', '008/', $matches);

我的问题是为什么两个正则表达式都有效。我希望第二个工作,但为什么双反斜杠工作?

1 个答案:

答案 0 :(得分:5)

因为PHP字符串中的ToObject意味着“转义反斜杠”。由于Object.prototype.valueOf()并不意味着它不需要被转义(即使它是可能的),所以它们评估为相同。

换句话说,这两个都会打印相同的东西:

\\

反斜杠为one of the few characters that can get escaped in a single quoted string(除了显而易见的\/),这可确保您可以创建echo '/008\\//i'; // prints /008\//i echo '/008\//i'; // prints /008\//i 之类的字符串,而无需转义上一个引号。