特定数字模式的正则表达式

时间:2015-04-08 05:20:55

标签: regex vbscript

我有可读形式的发票。我需要从发票中提取采购订单编号。采购订单编号采用特定格式(26123456, 26234567)。它以26开头,后跟6个数字。我试图使用正则表达式提取它。

我已将此作为参数传递给我。

[26]\d{6,6}我也试过这个^[26]\d{6,6}

然而,我面临的问题是:

如果采购订单编号为26454545且在采购订单编号之前,发票中还有其他编号,例如电话号码,其中包含26的子字符串,则也会提取该编号。对于前者12345678987此数字也被提取,因为子字符串中存在2和6。

1 个答案:

答案 0 :(得分:1)

删除字符类并添加字边界。

\b26\d{6}\b
  • [26]将匹配给定列表中的单个字符,无论它是2还是6。要匹配数字26,只需使用该数字。

  • 在开头和结尾添加\b有助于匹配完整的数字。由于\b匹配单词字符和非单词字符。你也可以在这里使用断言,如(?<!\d)26\d{6}(?!\d)

  

还有另一种模式我要提取12300012345.在前三个数字之后总是有3个零后跟5个数字。

\b\d{3}000\d{5}\b

如果要将两者结合起来,则需要使用正则表达式交替运算符|

\b26\d{6}\b|\b\d{3}000\d{5}\b