JSFiddle - React, Tailwind, and code Playground
HTML
Length of pattern: <span id="len"></span>
<ul id="results"></ul>
JavaScript
var reDigit = "(?:one|two|three|four|five|six|seven|eight|nine)";
var reTeen = "(?:twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety)";
var reTwoDigits = "(?:(?:" + reTeen + "-)?" + reDigit + "|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|" + reTeen + ")";
var reThreeDigits = "(?:(?:" + reDigit + " hundred (?:and )?)?" + reTwoDigits + "|" + reDigit + " hundred)";
var reSixDigits = "(?:(?:" + reThreeDigits + " thousand (?:and )?)?" + reThreeDigits + "|" + reThreeDigits + " thousand)";
var reTwelveDigits = "(?:(?:" + reSixDigits + " million (?:and )?)?" + reSixDigits + "|" + reSixDigits + " million)";
var reNumeric = "\\b(?:[0-9]+|" + reTwelveDigits + ")\\b";
$('#len').text(reNumeric.length);
var re = new RegExp(reNumeric, "g");
var result, source = "three, eleven, 15, foo, bar, eighty-two, four hundred sixty-nine";
while ((result = re.exec(source)) !== null) {
$('#results').append($('<li>').text(result[0]));
}