正则表达式:如何捕获字符串中的三个数字,而不是字符串的其余部分?

时间:2016-04-16 22:26:15

标签: javascript regex

我这里有一个文本文档:http://regexr.com/3d7t5

使用Javascript(nodeJS),我需要匹配以C.O开头的每个短语中的三位数字。 :即001,003,036等

我尝试过使用非捕获组但由于某些原因我的查询无效:

/([0-9]+)(?:C.O.            : \d\d\d)?/g

2 个答案:

答案 0 :(得分:1)

使用此模式:

/\bC\.O\.            : (\d\d\d)\b/g

然后对字符串执行exec并获取第一个捕获组的内容。

var rx = /\bC\.O\.            : (\d\d\d)\b/g
var s = "C.O.            : 001 CALI\nC.O.            : 003 MIAMI\nC.O.            : 026 TEXAS";
for (var m = rx.exec(s); m; m = rx.exec(s)) {
   document.write(m[1]+' ');
}

编辑:如果空格的数量和种类可能有所不同,您当然可以调整正则表达式来处理这个问题:

/\bC\.O\.\s*:\s*(\d\d\d)\b/g

答案 1 :(得分:0)

如果您只想匹配3位数字

/\d{3}/gm

就是你所需要的。但我认为你需要这样的东西:

/^C\.O\..*?(\d{3})/gm

/^C\.O\..*?:\s*(\d{3})/gm

您可以播放和修补上述正则表达式herehere

因为turns out quelquecosa遗漏了一两个“小细节”。

正则表达式可能应该是这样的:

/^\|\s+C\.O\.\s+:\s+(\d{3})/gm

Example here

这与以下文字中的009011相匹配,但不匹配Total C.O. ...

+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5.                                                                         HORA  :    5:56 PM |
|                                                                                                                    PAGINA:         14 |
|                                                                                                                                       |
| Empresa         : MA                                                                                                  |
| C.O.            : 009 PALMIRA2 OUTLET                                                 Fecha Inicial : 2016/04/16  Hora Inicial:       |
| Tipo Inventario : 6   ETIQUETAS Y BOLSAS                                              Fecha Final   : 2016/04/16  Hora Final  :       |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO              DESCRIPCION                           U.M.      CANTIDAD         BRUTO    DESCUENTOS     IMPUESTOS     T O T A L    |
+---------------------------------------------------------------------------------------------------------------------------------------+
01                  CLASIFICACION DANE                    UNI         45.000 ** OBSEQUIO **
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario    ETIQUETAS Y BOLSAS                                45.000             0             0             0             0
Total Inventario    ETIQUETAS Y BOLSAS                                45.000             0             0             0             0
-----------------------------------------------------------------------------------------------------------------------------------------
Total C.O.          PALMIRA2 OUTLET                                              1,001,346             0       160,254     1,161,600
Total C.O.          PALMIRA2 OUTLET                                              1,001,346             0       160,254     1,161,600
+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5.                                                                         HORA  :    5:56 PM |
|                                                                                                                    PAGINA:         15 |
|                                                                                                                                       |
| Empresa         : MA                                                                                                  |
| C.O.            : 011 CARTAGO                                                         Fecha Inicial : 2016/04/16  Hora Inicial:       |
| Tipo Inventario : 3   PRODUCTO TERMINADO                                              Fecha Final   : 2016/04/16  Hora Final  :       |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO              DESCRIPCION                           U.M.      CANTIDAD         BRUTO    DESCUENTOS     IMPUESTOS     T O T A L    |
+---------------------------------------------------------------------------------------------------------------------------------------+
01                  CLASIFICACION DANE                    UNI         26.000       853,537       225,943       100,415       728,009
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario    PRODUCTO TERMINADO                                26.000       853,537       225,943       100,415       728,009
Total Inventario    PRODUCTO TERMINADO                                26.000       853,537       225,943       100,415       728,009