代码之家  ›  专栏  ›  技术社区  ›  Albeis

匹配两个数字Regex PHP(不包括一个组合)

  •  0
  • Albeis  · 技术社区  · 6 年前

    我有这个密码:

    preg_match('/^COD([0-9][1-9]|0)$/', $input_line, $output_array);
    

    这条路和所有的都匹配,除了10码 密码20等等。。。

    如果我用

    preg_match('/^COD([0-9][0-9]|0)$/', $input_line, $output_array);
    

    这条路是匹配所有,包括代码00,这是不允许的。。。

    有什么解决办法吗?

    提前谢谢

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nick SamSmith1986    6 年前

    您需要在正则表达式中分别指定前导的0值,以便排除 COD00 :

    preg_match('/^COD(0[1-9]|[1-9][0-9])$/', $input_line, $output_array);
    

    如果你 希望 COD0 ,离开 |0 在regex中:

    preg_match('/^COD(0[1-9]|[1-9][0-9]|0)$/', $input_line, $output_array);
    
        2
  •  2
  •   CertainPerformance    6 年前

    只是消极的期待 00

    /^COD(?:(?!00)[0-9]{2}|0)$/
    

    https://regex101.com/r/wHL9Wg/1

    这允许 COD0 ,但是-如果这不可取,那么模式不应该包括 |0 交替:

    /^COD(?!00)[0-9]{2}$/