const regex = /\b(?<number>[\d,]+(?:\.\d+)?)(?<space> ?|&[^;]{2,7};)(?<dimensions>(?:(?<mathjax>\$[^\n\$]+\$)|(?<unit>(?:Y|Z|E|P|T|G|M|k|h|da|d|c|m|µ|n|p|f|a|z|y)?(?:m|g|s|A|K|mol|cd|Hz|N|Pa|J|W|C|V|F|Ω|S|Wb|T|H|lm|lx|Bq|Gy|Sv|kat|l|L))))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('\\b(?<number>[\\d,]+(?:\\.\\d+)?)(?<space> ?|&[^;]{2,7};)(?<dimensions>(?:(?<mathjax>\\$[^\\n\\$]+\\$)|(?<unit>(?:Y|Z|E|P|T|G|M|k|h|da|d|c|m|µ|n|p|f|a|z|y)?(?:m|g|s|A|K|mol|cd|Hz|N|Pa|J|W|C|V|F|Ω|S|Wb|T|H|lm|lx|Bq|Gy|Sv|kat|l|L))))', 'gm')
const str = `30 \$m^2\$
4,000 km
`;
const subst = `$<number> $<dimensions>`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions