2

我试图返回一个字母出现在一个单词中的次数。

我将这封信传递给这样的函数

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

不幸的是,matches 是空的,所以我无法调用它的长度,我知道这个字母出现在单词中,因为我已经检查过了

word.indexOf(letter) > -1

我怀疑问题出在我构建或评估的方式上pattern

4

2 回答 2

8

以下是构建非文字正则表达式的方法:

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

请参阅有关构建正则表达式的 MDN

这是一个计算字母出现次数的更简单的解决方案:

return word.split(letter).length-1;
于 2013-02-22T18:19:41.487 回答
2

你可以这样做:

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

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

这也在这里得到了回答:javascript new regexp from string

于 2013-02-22T18:28:03.497 回答