I'm trying to build a regex in JavaScript that will match parts of an arithmetic operation. For instance, here are a few inputs and expected outputs:
What is 7 minus 5? >> ['7','minus','5']
What is 6 multiplied by -3? >> ['6','multiplied by', '-3']
I have this working regex: /^What is (-?\d+) (minus|plus|multiplied by|divided by) (-?\d+)\?$/
Now I want to expand things to capture additional operations. For instance:
What is 7 minus 5 plus 3? >> ['7','minus','5','plus','3']
So I used: ^What is (-?\d+)(?: (minus|plus|multiplied by|divided by) (-?\d+))+\?$
. But it yields:
What is 7 minus 5 plus 3? >> ['7','plus','3']
Why is the minus 5 skipped? And how do I include it in results as I'd like? (here is my sample)