I've the following string splitting JavaScript code:
var formula = "(field1 + field2) * (field5 % field2) / field3";
console.log(formula.split(/[+(-)% *\/]/));
And the result is out of expectation:
["", "field1", "", "", "field2", "", "", "", "", "field5", "", "", "field2", "", "", "", "field3"]
What the desired result would be:
["field1", "field2", "field5", "field2", "field3"]
I'm using Google Chrome 11 official release as the testing browser, please kindly advise what I'm doing wrong.
Thank you!
William
Instead of splitting on
/[+(-)% *\/]/
split on more than one:/[+(-)% *\/]+/
. You still might get empty matches at the start and end. To solve that problem you can use a similar regex with replace:So
yields
You are splitting at each of those characters. If you split on groups of them, you'll get your desired result.
There's just one snag: you will have to manually strip off those characters from the beginning and the end of the string (or pop off an empty string at the start/end) - it's not something you'll be able to handle by
split
alone.