2014-07-25 68 views
0

我正在使用JS日期庫,它具有簡單的asString()格式化語法,例如, dd mmm yyyy產生01 Jan 1970RegEx在JavaScript中拆分格式化字符串

不幸的是,這個月碰巧包含一個出現在格式化字符串中的字母,它可能會出錯, 'Date('2014-09-01')。asString('dd mmm yyyy')= 01 Septe9ber 2014'

解決這個問題很簡單;改爲使用格式「[dd] [mmm] [yyyy]」的asString()方法。但是,這來自其他方法使用的全局格式字符串。唯一需要方括號的方法是asString方法。

所以我的理想的解決方案是簡單地在該方法中它取代任何下列字符串的format字符串中增加一個功能:通過[]

dd/mm/yyyy => [dd]/[mm]/[yyyy] 

不幸的是,包圍

formats=['yyyy','yy','mmmm','mmm','mm','m','dddd','ddd','dd','d','hh','min','ss']; 

與自身RegEx證明是複雜的 - 簡單地循環瀏覽每個項目的結果爲[[d][d]]/[[m][m]]/[[yy][yy]]

所以我想幫忙寫這個RegEx。如果無法完成,請這麼說 - 我對使用新庫作爲解決方案不感興趣,但會考慮在當前方法內以不同方式解決問題的解決方案(即不會發生重大更改)

回答

0

這應該這樣做:

var regex = /(min|y+|m+|d+|h+|s+)/g, 
    newString = format.replace(regex,'[$1]'); 

與格式"dd/mm/yyyy"測試,導致"[dd]/[mm]/[yyyy]"

+0

與其他幾個人,最工作進行測試。 'dddd mmmm yy'這個有用的工作。只有時間沒有'md'產生'[md]',但是否有人會想要這種格式,這是值得懷疑的。它也會將'min'變成''m'',但總的來說它起作用。謝謝! – M1ke

+0

@ M1ke編輯我的答案,修復'[m] in和'[md]'問題。如果我的答案解決了您的問題,請使用投票計數下面的複選標記接受它。謝謝。 – SeinopSys