Javascript 使用正则表达式计算字符串中的元音

Javascript 使用正则表达式计算字符串中的元音,javascript,regex,Javascript,Regex,我刚刚开始学习JavaScript,我被正则表达式所困扰。这个程序应该计算输入字符串中的元音数并显示元音 如果元音没有放在一起,程序运行正常,但是如果元音出现在一起,程序不会给出正确的值。e、 g.“树”。元音将显示为“ee”,计数为1 在此处键入一个单词: 函数元音(){ var String1=document.getElementById('word1').value; var re=新的RegExp(/[aeiou]+/gi); var vouels1=String1.match(re

我刚刚开始学习JavaScript,我被正则表达式所困扰。这个程序应该计算输入字符串中的元音数并显示元音

如果元音没有放在一起,程序运行正常,但是如果元音出现在一起,程序不会给出正确的值。e、 g.“树”。元音将显示为“ee”,计数为1

在此处键入一个单词:
函数元音(){
var String1=document.getElementById('word1').value;
var re=新的RegExp(/[aeiou]+/gi);
var vouels1=String1.match(re);
警报(元音1);
如果(元音1.长度>=1)
{
警报(“元音的数量为:“+元音1.length”);
}
其他的
{
警惕(“单词中没有元音”);
}
}
请帮助我找到正确的正则表达式,
else
语句不起作用。请帮我修一下。

试试这个方法

function getVowels(str) {
  var m = str.match(/[aeiou]/gi);
  return m === null ? 0 : m.length;
}
试试这个方法

function getVowels(str) {
  var m = str.match(/[aeiou]/gi);
  return m === null ? 0 : m.length;
}

只需丢失
+
——您的表达式将连续元音组作为单个匹配项

var re = /[aeiou]/gi;
对于
else
,当没有匹配项时(并且
vouels1
null
),此行将失败:

此时,脚本停止执行,我们永远不会运行
else

因此,将其更改为:

if (Vowels1 && (Vowels1.length > 0))

只需丢失
+
——您的表达式将连续元音组作为单个匹配项

var re = /[aeiou]/gi;
对于
else
,当没有匹配项时(并且
vouels1
null
),此行将失败:

此时,脚本停止执行,我们永远不会运行
else

因此,将其更改为:

if (Vowels1 && (Vowels1.length > 0))

只需删除
+
。所以
“tree”.match(/[aeiou]/gi).length
为您提供
2
只需删除
+
。所以
“tree”.match(/[aeiou]/gi).length
为您提供
2
谢谢,现在它工作正常。你能推荐一些学习javascript的材料吗?谢谢,现在效果很好。你能推荐一些学习javascript的材料吗。