2

I'm trying to return the number of times a letter appears in a word.

I'm passing the letter to a function like so

function getCount(letter)
{
    var pattern = '/' + letter + '/g';
    var matches = word.match(pattern);
    return matches.length;
}

Unfortunately matches is null so I'm unable to call length on it, I know the letter appears in the word as I've already checked that

word.indexOf(letter) > -1

I suspect the problem is with the way I'm building or evaluating pattern

Luke
  • 3,481
  • 6
  • 39
  • 63

2 Answers2

8

Here's how you build a non literal regular expression :

var pattern = new RegExp(letter, 'g');

See the MDN on building a regular expression.

And here's a simpler solution to count the occurrences of the letter :

return word.split(letter).length-1;
Denys Séguret
  • 372,613
  • 87
  • 782
  • 758
2

You can do this:

function hasClass(letter) {
    var pattern = new RegExp(letter,'g'); // Create a regular expression from the string
    var matches = word.match(pattern);
    return matches;

Ref: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp

This was also answered here: javascript new regexp from string

Community
  • 1
  • 1
Jeff Shaver
  • 3,315
  • 18
  • 19