应该使用php正则表达式中的反斜杠转义哪些符号?

时间:2012-12-08 13:12:53

标签: php regex escaping

preg_match('@\.php@',$url,$match)

普通的: -

  • 斜线
  • 报价
  • 双引号

其他人?

应该转义@?=吗?

3 个答案:

答案 0 :(得分:4)

PHP文档中有一个特殊的正则表达式字符列表:http://php.net/manual/en/function.preg-quote.php

  

特殊正则表达式字符为:. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

答案 1 :(得分:2)

也许你会发现preg_quote函数很有用:

  

preg_quote()接受str并在每个前面放一个反斜杠   作为正则表达式语法一部分的字符。这是   如果你有一个运行时字符串,你需要匹配一些   text和字符串可能包含特殊的正则表达式字符。

     

特殊的正则表达式字符是:。 \ + *? [^] $(){   } =! &LT; &GT; | : -

答案 2 :(得分:2)

@?应该反斜杠,=不应该。

正则表达式中反斜杠转义所需的字符包括:

  • 方括号[]
  • 括号()
  • 大括号{}
  • Caret ^
  • 美元符号$
  • 期间.
  • 管道|
  • Asterisk *
  • +
  • 问号?
  • 反斜杠\

此外,您的正则表达式分隔符(在本例中为@)需要反斜杠。

重要的是要注意某些字符在某些上下文中可能是元字符。例如,连字符不是此字符串表示的正则表达式中的元字符:

"/foo-/"

是以下字符串中的元字符:

"/foo[a-z]/"