2014-09-02 44 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