Javascript正则表达式匹配结果为空

Javascript正则表达式匹配结果为空,javascript,html,regex,null,match,Javascript,Html,Regex,Null,Match,我正在尝试编写一个javascript函数来接收字符串,并计算元音的数量。显示每个元音的计数以及总计。如果每个元音都在字符串中,它可以正常工作,但如果例如没有A或E,它将返回null 有什么方法可以截取并用0替换空值?还是有更有效的方法来实现这一点?谢谢所有能帮忙的人 函数count元音(inString){ 返出量=( 总元音:“+inString.match(/[aeiou]/gi).长度+ “\n总计A:”+inString.match(/[A]/gi).length+ “\n总计E:”

我正在尝试编写一个javascript函数来接收字符串,并计算元音的数量。显示每个元音的计数以及总计。如果每个元音都在字符串中,它可以正常工作,但如果例如没有A或E,它将返回null

有什么方法可以截取并用0替换空值?还是有更有效的方法来实现这一点?谢谢所有能帮忙的人

函数count元音(inString){
返出量=(
总元音:“+inString.match(/[aeiou]/gi).长度+
“\n总计A:”+inString.match(/[A]/gi).length+
“\n总计E:”+inString.match(/[E]/gi).length+
“\n总计I:”+inString.match(/[I]/gi).length+
“\n总O:”+inString.match(/[O]/gi).length+
“\n总长度:”+inString.match(/[U]/gi).长度
);
}

输入字符串以计算其元音

数元音
问题不在正则表达式中,而是在逻辑中

对于给定的
inString
say测试,它没有元音
a
o
。因此正则表达式将找不到任何匹配项,这将失败

您可以尝试以下方法:

原始代码:

函数count元音(inString){
返出量=(
“总元音:”+(inString.match(/[aeiou]/gi)| |[])长度+
“\n总计A:”+(inString.match(/[A]/gi)| |[])长度+
“\n总计E:”+(inString.match(/[E]/gi)| |[])长度+
“\n总计I:”+(inString.match(/[I]/gi)| |[])长度+
“\n总O:”+(inString.match(/[O]/gi)| |[])长度+
“\n总计U:”+(inString.match(/[U]/gi)| |[])长度
);
}

输入字符串以计算其元音

数元音
您可以使用
| |[]
作为大小写
的默认“返回值”。match
返回
null

函数count元音(inString){
返出量=(
“总元音:”+(inString.match(/[aeiou]/gi)| |[])长度+
“\n总计A:”+(inString.match(/A/gi)| |[])长度+
“\n总计E:”+(inString.match(/E/gi)| |[])长度+
“\n总计I:”+(inString.match(/I/gi)| |[])长度+
“\n总O:”+(inString.match(/O/gi)| |[])长度+
“\n总计U:”+(inString.match(/U/gi)| |[])长度
);
}

输入字符串以计算其元音

数元音
匹配的结果为
null
时,您可以添加使用条件运算符来输出0,而不是
length

为了使它更具可读性,您可以事先获得长度,然后在最终字符串中使用它

函数count元音(inString){
var aCount=inString.match(/[a]/gi)!==null?inString.match(/[a]/gi)。长度:0;
var ecoount=inString.match(/[e]/gi)!==null?inString.match(/[a]/gi)。长度:0;
var iCount=inString.match(/[i]/gi)!==null?inString.match(/[a]/gi)。长度:0;
var-oCount=inString.match(/[o]/gi)!==null?inString.match(/[a]/gi)。长度:0;
var uCount=inString.match(/[u]/gi)!==null?inString.match(/[a]/gi)。长度:0;
var vouelscount=a计数+e计数+i计数+o计数+u计数;
var outString=“总元音:”+vouelscount+
“\n总计A:”+A帐户+
“\n总计E:”+eCount+
“\n总计I:”+iCount+
“\n总计O:”+O帐户+
“\n总数:”+U计数;
回报突出;
}

输入字符串以计算其元音

数元音
是的,
匹配
这样有点烦人。我会尝试另一种方法:编写一个
函数count(string,letter)
,计算
string
letter
的实例数,并使用
count(inString,'a')
count(inString,'e')
调用它。。您可以保存每个元音,并将它们相加以获得元音的总数。您可以使用
/[a]/gi
,而不是
/a/gi
。这并不能解决你的问题,但它更干净了一点……这是一种浪费,因为你要执行每个正则表达式匹配两次。@TimothyGroote是的,你是对的。刚刚检查了下面Cerburs的答案。谢谢你指出。