php正则表达式只匹配数字和2个数字,不匹配偏数


php regular expression match number with 2 digitis only, no partial number

我在php中遇到以下问题:

我想提取一个只有两位数字的数字,而不是较长数字的部分。

我使用的是preg_match(),只想把数字作为匹配结果。

例如,"abc53abc"应该返回53,但"abc553abc"不应该返回任何内容。

我尝试使用"/[0-9]{2}/",但第一个示例使用53,第二个示例使用了55,这不是我想要的。

有什么想法吗?谢谢

您需要一个负先行和负后向

(?<!'d)'d{2}(?!'d)

演示

解释:

  • (?<!'d)这个反向查找断言前面的字符不能是数字
  • 'd{2}匹配两位数字
  • (?!'d)否定前瞻断言以下字符不能是数字
preg_match("/([0-9]{2})/ui",$str,$match);