我正在使用JS日期库,它具有简单的asString()
格式化语法,例如dd mmm yyyy
生成01 Jan 1970
。
不幸的是,月份恰好包含出现在格式化字符串中的字母,它可能会出错,例如`日期('2014-09-01')。asString('dd mmm yyyy')= 01 Septe9ber 2014'
要解决这个问题很简单;改变asString()
方法以使用格式'[dd] [mmm] [yyyy]'。但是,这来自其他方法使用的全局格式字符串。唯一需要方括号的方法是asString
方法。
所以我理想的解决方案是在该方法中添加一个函数,该函数替换format
字符串中的以下任何字符串:
formats=['yyyy','yy','mmmm','mmm','mm','m','dddd','ddd','dd','d','hh','min','ss'];
本身被[]
dd/mm/yyyy => [dd]/[mm]/[yyyy]
不幸的是,RegEx证明是复杂的 - 只需循环遍历每个项目就会产生[[d][d]]/[[m][m]]/[[yy][yy]]
。
所以我想帮助写一下这个RegEx。如果不能这样做请说 - 我对使用新库作为解决方案不感兴趣,但会考虑在当前asString
方法中以不同方式解决问题的解决方案(即没有重大变化)
答案 0 :(得分:0)
这应该做:
var regex = /(min|y+|m+|d+|h+|s+)/g,
newString = format.replace(regex,'[$1]');
使用格式"dd/mm/yyyy"
进行测试,结果为"[dd]/[mm]/[yyyy]"