RegEx在JavaScript中拆分格式化字符串

时间:2014-07-25 10:39:04

标签: javascript regex

我正在使用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方法中以不同方式解决问题的解决方案(即没有重大变化)

1 个答案:

答案 0 :(得分:0)

这应该做:

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

使用格式"dd/mm/yyyy"进行测试,结果为"[dd]/[mm]/[yyyy]"