2014-09-02 50 views
3

试图找到答案,但没有成功。正则表达式从匹配中删除模式

所以,让我们说我有一个字符串

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 

我需要/ 1800或/ 200或/ 1800或/ 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

你可以试试下面的正则表达式匹配只有/1,800/200/1,800/1800

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

DEMO

OR

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

DEMO

(?! \d)此负面预测表明,数字后面的字符不能是<space>和一个数字。所以这个/01/2014匹配应该失败,因为它后面跟着一个空格和一个数字。

+0

Ty非常非常非常!用这个失去了几个小时。 – 2014-09-02 08:28:22

+0

忘记了另外一种情况:(可能是/ 50例如,你能为我解决这个问题吗?再次感谢您!也许我找到了:\ /(?:\ d,\ d {3} | \ d {2,4}(?!/))\ b(?!\ d) – 2014-09-02 08:30:57

2
.*(\/\S+) 

这个简单的正则表达式应该适合你。

See demo