More Regex Complications!
Aug. 12th, 2015 04:52 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Here's one I thought would be simple, which wasn't. The problem is, "return a count of all the vowels (not y) in a string." I thought I'd use regex.exec to capture an array of vowels and find the length of the array... But it only ever returned length 2. I see in the Mozilla Developer Network info page that RexExp.length is 2, but I don't know why I'm getting that here. Can someone troubleshoot?
function VowelCount(str) { var re = /([aeiou])/ig; var arr = re.exec(str); console.log(arr); return arr.length; } console.log(VowelCount('moooo'));So I pivoted to for loops and came up with this,
function VowelCount(str) { var re = /[aeiou]/i; var count = 0; for (var i = 0; i < str.length; i++) { if (re.test(str.charAt(i))) { count += 1; console.log(i); } return count; }This also took some troubleshooting, since the count was wrong when I was using the 'g' flag in the regex. I'm also not sure why that was. Other people I looked at also had mangled looking answers, though of course Matt Larsh has something good,
function VowelCount(str) { var vowels = str.match(/[aeiou]/g); return vowels.length; }Looks like I need to bone up on str.match.