exports.makeParser = makeParser;
var symbols = {
  unity: {
    ones: 'I',
    fives: 'V',
    tens: 'X'
  },
  dozen: {
    ones: 'X',
    fives: 'L',
    tens: 'C'
  },
  hundred: {
    ones: 'C',
    fives: 'D',
    tens: 'M'
  },
  thousand: {
    ones: 'M'
  }
};
var roman = (function () {
  var values = [];
  Object.keys(symbols).forEach(function (symbol) {
    Object.keys(symbols[symbol]).forEach(function (key) {
      if (values.indexOf(symbols[symbol][key]) >= 0) return;
      values.push(symbols[symbol][key]);
    });
  });
  return values.join('');
})();

exports.unity = makeParser(symbols.unity);
exports.dozen = makeParser(symbols.dozen);
exports.hundred = makeParser(symbols.hundred);
exports.thousand = makeParser(symbols.thousand);
exports.roman = new RegExp('[' + roman + ']+', 'gi');

function makeParser(mult) {
  var raw = '(' + mult.ones + '{,3})?';
  if (mult.fives) {
    raw += '(' + mult.ones + '?' + mult.fives;
    raw += '|' + mult.fives + mult.ones + '{,3})?';
  }
  if (mult.tens) {
    raw += '(' + mult.ones + mult.tens + ')?';
  }
  return new RegExp(raw, 'gi');
}


@@ -1,36 +1,41 @@
-exports.makeParser = makeParser;
+var format = require('./format.js');%0A
 %0Avar
@@ -267,16 +267,17 @@
 %0A  %7D%0A%7D;%0A
+%0A
 var roma
@@ -572,16 +572,49 @@
 %0A%7D)();%0A%0A
+exports.makeParser = makeParser;%0A
 exports.
@@ -880,97 +880,153 @@
 var 
-raw = '(' + mult.ones + '%7B,3%7D)?';%0A  if (mult.fives) %7B%0A    raw += '(' + mult.ones + '?' + 
+tmpl = '';%0A  var raw;%0A  if (mult.tens && mult.fives) %7B%0A    tmpl = '%7B%7Bones%7D%7D%5B%7B%7Btens%7D%7D%7C%7B%7Bfives%7D%7D%5D%7C%7B%7Bfives%7D%7D?%7B%7Bones%7D%7D%7B1,3%7D%7C%7B%7Bfives%7D%7D';%0A  %7D else if (
 mult
@@ -1035,135 +1035,137 @@
 ives
-;
+) %7B
 %0A    
-raw += '%7C' + mult.fives + mult.ones + '%7B,3%7D)?';%0A  %7D%0A  if (mult.tens) %7B
+tmpl = '%7B%7Bones%7D%7D%7B%7Bfives%7D%7D%7C%7B%7Bones%7D%7D%7B1,3%7D%7C%7B%7Bfives%7D%7D';%0A  %7D else %7B%0A    tmpl = '%7B%7Bones%7D%7D%7B1,3%7D'
 %0A  
+%7D%0A
   raw 
-+
 = 
-'(' + mult.ones + mult.tens + ')?';%0A  %7D
+format(tmpl, mult);
 %0A  r
@@ -1181,19 +1181,31 @@
  RegExp(
-raw
+'(' + raw + ')'
 , 'gi');

Update regex and use the format module.