试图找到答案,但没有成功。

所以,假设我有一个字符串

12/01/2014 22:13 1,600/1,800 *or*
12/01/2014 22:13 100/200 *or*
12/01/2014 22:13 1,600/1,800 A *or*
12/01/2014 22:13 1600/1800 A

我需要得到/1,800 或/200 或/1,800 或/1800
/(\d{1,3},)*\d+.?(\d{1,8}|)

这给了我 2 个匹配项:例如。/1,800 和/01/2014

我找到了排除日期的模式:
(?!(0?[1-9]|1[012])([-/.])(0?[1-9]|[12][0-9]|3[01])([-/.])(19|20)\d\d)

但我不知道如何将这两者结合起来。

最佳答案

您可以尝试使用以下正则表达式仅匹配 /1,800/200/1,800/1800

\/(?:\d,\d{3}|\d{3,4})\b(?=[^\d]*$)

DEMO


\/(?:\d,\d{3}|\d{3,4})\b(?! \d)

DEMO
(?! \d) 这个否定前瞻断言数字后面的字符不能是 <space> 和数字。所以这个 /01/2014 匹配应该失败,因为它后面跟着一个空格和一个数字。

关于正则表达式从匹配中删除模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25618236/

10-12 06:13