正则表达式数字不被其他数字包围

Rob*_*b V 2 php regex preg-match-all

我正在尝试获取一个不被任何其他数字包围且不在数字序列中的六位数字。该数字可以存在于字符串的开头、字符串中的任何位置以及末尾。它前面还可以有逗号和文本,但最重要的是不同的 6 位数字块。我已经竭尽全力进行前瞻和条件处理,但找不到解决所有问题的完整解决方案。

样本数据:

00019123211231731订单号 761616 BR 地址 123 A ST
订单号。760641 约翰·多伊
参考号:订单#761625
OP212312165 订单号 759699 /REC/YR 123 A ST
766911
761223,761224,761225

Ali*_*aru 5

(^|\D)(\d{6})(\D|$)。您将在捕获组 2 中找到所需的 6 位匹配项。请注意,此解决方案仅对一场匹配项可靠。它不会找到这两个数字123456,567890(谢谢艾伦指出这一点!)。如果需要多个匹配,则应使用环视解决方案。

通过环顾四周:

(?<=^|\D)\d{6}(?=\D|$)

或使用环视且条件为有效数字(即第一位数字不为 0):

(?<=^|\D)[1-9]\d{5}(?=\D|$)