从字符串构建Javascript正则表达式

时间:2013-02-22 18:17:52

标签: javascript regex

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

我将这封信传给了一个像这样的函数

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

不幸的是,匹配为空,所以我无法调用它的长度,我知道这个字母出现在我已经检查过的那个字上

word.indexOf(letter) > -1

我怀疑问题与我正在构建或评估pattern

的方式有关

2 个答案:

答案 0 :(得分:8)

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

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

请参阅the MDN on building a regular expression

这里有一个更简单的解决方案来计算这封信的出现次数:

return word.split(letter).length-1;

答案 1 :(得分: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