mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
25 lines (23 loc) • 1.02 kB
JavaScript
function makeExtendedRegExp(inputPatternStr, flags) {
const cleanedPatternStr = inputPatternStr.replace(/(^|[^\\])#.*/g, "$1").replace(/(^|[^\\])\s+/g, "$1");
return new RegExp(cleanedPatternStr, flags);
}
const RGIntOrDecimal = makeExtendedRegExp(String.raw`
\d+ # Match one or more digits (integer part)
(?:\.\d+)? # Optionally match a decimal point followed by digits
`, "g");
const RGVariable = makeExtendedRegExp(String.raw`
[a-zA-Z] # Match one alphabetic characters
`, "g");
const RGOptionalVariable = makeExtendedRegExp(String.raw`
[a-zA-Z]? # Match one alphabetic characters or none
`, "g");
const RGNumbersAndOrVar = makeExtendedRegExp(String.raw`
(?:${RGIntOrDecimal.source}${RGOptionalVariable.source})
|
(?:${RGVariable.source})
`, "g");
const RGFraction = makeExtendedRegExp(String.raw`
(?:(${RGNumbersAndOrVar.source})\/)+(${RGNumbersAndOrVar.source})
`, "g");
export { RGFraction, RGIntOrDecimal, RGNumbersAndOrVar, RGOptionalVariable, RGVariable, makeExtendedRegExp };