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

RegEx to split formatting string in JavaScript

本文关键字:格式化 字符串 拆分 JavaScript RegEx      更新时间:2023-09-26

我正在使用一个JS日期库,它有一个简单的asString()格式化语法,例如dd mmm yyyy产生01 Jan 1970

不幸的是,如果月份碰巧包含一个出现在格式化字符串中的字母,它可能会出错,例如:的日期("2014-09-01")。asString(' add mmm yyyy') = 01 september 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]]

所以我想帮助写这个正则表达式。如果不能做到,请这样说-我对使用新的库作为解决方案不感兴趣,但会考虑在当前asString方法内以不同的方式解决问题的解决方案(即没有破坏性更改)

应该这样做:

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

"dd/mm/yyyy"格式测试,结果是"[dd]/[mm]/[yyyy]"