const regex = /^([A-z]+)(?: *= *)(\d+|[A-z]+)$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^([A-z]+)(?: *= *)(\\d+|[A-z]+)$', 'gm')
const str = `Expression validator
^((?:[A-z]+)|((-|\\+)?\\d+))( +(\\++|-+) +((?:-?\\d+)|(?:[A-z]+)))*\$
Assignment validator
^([A-z]+)(?: *= *)(\\d+|[A-z]+)\$
c= a
8
8 + 4
-2 + 4 - 5 + 6
9 +++ - 10 -- 8
9 --- + 10
9 --- -10
9 +++ -10 -- 8
3 --- 5
14 - 12
-3 2
name = 44
a = 5
capName = 6 + 4
capName = 6
n = 3
m=4
a = 5
b = a
v= 7
n =9
c= a
A variable can have a name consisting of more than one letter.
count = 10
To print the value of a variable you should just type its name.
N = 5
N
5
It should be possible to set a new value to an existing variable.
a = 1
a = 2
a = 3
a
3
If an identifier or value of a variable is invalid, the program must print a message like the one below.
a1 = 8
Invalid identifier
n = a2a
Invalid assignment
a = 7 = 8
Invalid assignment
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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