var commonFormatterKeys = [ 'M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd', 'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG', 'H', 'HH', 'h', 'hh', 'm', 'mm', 's', 'ss', 'S', 'SS', 'SSS', 'Z', 'ZZ', 'X', 'x' ] function buildFormattingTokensRegExp (formatters) { var formatterKeys = [] for (var key in formatters) { if (formatters.hasOwnProperty(key)) { formatterKeys.push(key) } } var formattingTokens = commonFormatterKeys .concat(formatterKeys) .sort() .reverse() var formattingTokensRegExp = new RegExp( '(\\[[^\\[]*\\])|(\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g' ) return formattingTokensRegExp } module.exports = buildFormattingTokensRegExp