1

我有这个输入:

stuff (2+13:02)
more stuff (20:32)
more more stuff (8+23:00)

是可选的2+,代表完全不同的值,所以我写了这个正则表达式:

/((?:(\d)?+?)(\d+:\d+))/g

$1应该始终是前面的数字+,并将其余数字分组:$2但这并不总是发生。在(20:32), $1will be2$2will be的例子中0:32。我怎样才能使$1 undef$2 = 20:32

有任何想法吗?

谢谢!

4

1 回答 1

6

尝试将其?移至您希望成为可选的组之后。此外,您通常需要转义+if 想要匹配文字+

/(?:(\d)\+)?(\d+:\d+)/g

这将匹配:

  • 一个可选的、未捕获的组:
    • 一个数字,在第 1 组中捕获
    • 一个字面+
  • 一个或多个数字,后跟 a :,后跟一个或多个数字,在第 2 组中捕获
于 2013-10-17T22:06:39.230 回答