More Regex Complications!
Aug. 12th, 2015 04:52 pmHere'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.