我有一个字母字符串形式的字母数组
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
。
答案 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