将字母字符串转换为纯字母,以便在.match正则表达式中使用

时间:2014-06-04 03:02:40

标签: javascript arrays match

我有一个字母字符串形式的字母数组

alpha = ['a','b', etc..];

我正在计算单词中每个字母的数字

for (j=0;j<alpha.length;j++){
    num = word.match(/alpha[j]/g).length;}

问题是,例如,alpha[0]'a',而非a且匹配正则表达式仅识别a。 如何将'a'转换为a以便匹配识别它?

澄清

"ara".match(/a/g)返回["a","a"]"ara".match(/'a'/g)返回null

2 个答案:

答案 0 :(得分:0)

您可以使用如here所述的RegExp构造函数从字符串构造一个RegExp。

for (j=0;j<alpha.length;j++){
    var matches = word.match(new RegExp(alpha[j], "g"));
    if (matches) {
       num = matches.length;
       // other code here to process the match
    }
}

这假设alpha数组中的所有字符都不是正则表达式中的特殊字符,因为如果它们是,则必须将它们转义,以便将它们视为普通字符。

答案 1 :(得分:0)

正如jfriend00建议的那样,您可以使用RegExp构造函数,如:

var re, num, matches;

for (j=0; j<alpha.length; j++){
    re = new RegExp(alpha[j],'g');
    matches = word.match(re);
    num = matches? matches.length : 0;
}

请注意,另一种方式(更短,更快,更简单)是:

var num = word.split('a').length - 1; // 'ara' -> 2