2015-05-26 14 views
1

我有以下字符串:正則表達式與字符串匹配的日期作爲一個月

var cur = "t+20d"; 

我想匹配。這部分我已經與

if(cur.match(/^[t]\+[0-9]{2,4}[dmyw]/i)) 

做現在,我還需要能夠在相同的正則表達式

var cur = "10may15+20d"; 

我已經試過

cur.match(/^([t]|([0-9]{1,2}(jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)))\+[0-9]{2,4}[dmyw]/i) 

但它匹配這個字符串,prefably doens沒有按預期工作。

,如果我嘗試編譯分部,我得到陣列的兩片,而不是一個

cur.match(/[0-9]{1,2}(jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)/i); 
//yields ["10MaY", "MaY"] 

這我擔心誤報。

我真的真的生鏽在正則表達式,上次我試圖做一個複雜的正則表達式是15年前,這是在Perl中,所以我真的可以用這個一些幫助。我知道或分組比賽是可能的,我只是不知道如何去做,所以一些幫助appriciated。

回答

1

您需要匹配月份後存在的號碼。

^(t|[0-9]{1,2}(?:jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)\d+)\+[0-9]{2,4}[dmyw] 

DEMO

+0

您指出我正確的方向。感謝那。 Mabe你可以編輯這個問題,說明它是一個集團運營商':?'是我正在尋找的東西,使它成爲通過谷歌來到這裏的人更完整的答案。 – Tschallacka

1

隨着@AvinashRaj誰向我指出的組操作員的幫助:?與他的正則表達式我設法撰寫此regexfor我使用,我在這裏張貼了誰可能需要未來用戶以匹配這樣的日期字符串。 ddmmmyy

cur = "10-apr-1115+20d"; 
cur.match(/^(?:t|[0-9]{1,2}(?:jan|feb|mar|apr|may|jun|jul|aug|sep|okt|nov|dec|[-\/](?:[0-9]{1,2}|jan|feb|mar|apr|may|jun|jul|aug|sep|okt|nov|dec)[-\/])(?:[0-9]{2}|[0-9]{4}))\+[0-9]{1,4}[dmyw]/igm);