难以将postgres正则表达式翻译成php preg_match

时间:2017-11-06 13:27:08

标签: php postgresql

我正在研究一个数据库,试图获取符合条件的那些行:以integer / AONO开头/任何带有年份(整数)的字符串/结尾。此类行的示例包括:

  1. 005 /青野/ CAN1er / 2017
  2. 167 /青野/ MINEE / CMPM / 2017
  3. 004 /青野/ DDMAPL / CDPM / 2017
  4. 002 /青野/ CAY6 / CIPM / 2017
  5. 004 /青野/ DRMAP / DDMAP / CDPM / SM / 2017
  6. 在postgres中,我在查询中使用了以下条件:

    where reference_consultation ~* '^([0-9]*)+[/]AONO[/].*[/]([0-9]*)+$'.
    

    查询有效,但是当尝试使用preg_match在php中使用条件时,就好像:

    if (preg_match('/^([0-9]*)+[/]AONO[/].*[/]([0-9]*)+$/',$reference)) {
    
            return true;
            }
    else 
           return false;
    

    即使是匹配参考我也会得到假

1 个答案:

答案 0 :(得分:1)

preg_match('/^([0-9]*)+[/]AONO[/].*[/]([0-9]*)+$/', $reference)

您使用/作为分隔符,但也在正则表达式中使用它。

您需要在正则表达式中将它们转义

preg_match('/^([0-9]*)+[\/]AONO[\/].*[\/]([0-9]*)+$/', $reference)

或使用不同的分隔符

preg_match('~^([0-9]*)+[/]AONO[/].*[/]([0-9]*)+$~', $reference)