捕获起始编号和最终编号

时间:2016-02-19 14:22:49

标签: javascript regex node.js

我试图创建一个正则表达式来捕获行中的第一个数字和最后一个数字,但我对最后一个有问题:

这些线条如下:

00005    SALARIO MENSAL                                                 17030         36.397.291,92                                                              36.397.291,92
00010    HORAS TRABALHADAS                                              0798              19.731,93                                                                  19.731,93

这是我的正则表达式:

(^\d+).*(\d)

正如您在此处所见:http://regexr.com/3crbt未按预期工作。我可以得到第一个,但最后一个只是最后一个。

谢谢!

3 个答案:

答案 0 :(得分:0)

我尝试了下面的一个:

(^(\ d +))|(\ d + $)

它似乎适用于regexr.com。但是匹配它们可能需要一些假设,即每条线至少有两个数字。

答案 1 :(得分:0)

您可以使用

/^(\d+).*?(\d+(?:[,.]\d+)*)$/gm

请参阅regex demo

正则表达式匹配:

  • ^ - 行的开头
  • (\d+) - 将1个或多个数字捕获到第1组
  • .*? - 匹配除换行符之外的任何字符,尽可能少的
  • (\d+(?:[,.]\d+)*) - 一个或多个数字后跟零个或多个,.序列,后跟一个或多个数字(第2组)
  • $ - 字符串
  • 的结尾

/g修饰符可确保我们获得所有匹配,/m修饰符分别使^$匹配的开始和结束

答案 2 :(得分:-2)

您需要将.*非贪婪更改为.*?,并将+添加到第二个数字序列匹配。

^(\d+).*?(\d+)$

如果您想匹配完整的最后一个号码,请使用:

^(\d+).*?([\d\.,]+)$

Example