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,266
  • 4
  • 37
  • 59

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
  • 355,860
  • 83
  • 755
  • 726
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,235
  • 17
  • 19