Luke
Luke

Reputation: 3541

Building a Javascript Regex from string

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

Upvotes: 2

Views: 159

Answers (2)

Denys Séguret
Denys Séguret

Reputation: 382150

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;

Upvotes: 8

Jeff Shaver
Jeff Shaver

Reputation: 3355

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

Upvotes: 2

Related Questions